Home | History | Annotate | Download | only in containers
      1 #ifndef TEST_COMPARE_H
      2 #define TEST_COMPARE_H
      3 
      4 #include <cstddef>
      5 #include <type_traits>
      6 #include <cstdlib>
      7 #include <new>
      8 #include <climits>
      9 
     10 template <class C>
     11 class test_compare
     12     : private C
     13 {
     14     int data_;
     15 public:
     16     explicit test_compare(int data = 0) : data_(data) {}
     17 
     18     typename C::result_type
     19     operator()(typename std::add_lvalue_reference<const typename C::first_argument_type>::type x,
     20                typename std::add_lvalue_reference<const typename C::second_argument_type>::type y) const
     21         {return C::operator()(x, y);}
     22 
     23     bool operator==(const test_compare& c) const
     24         {return data_ == c.data_;}
     25 };
     26 
     27 #endif  // TEST_COMPARE_H
     28