1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- //===----------------------------------------------------------------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef TEST_COMPARE_H
- #define TEST_COMPARE_H
- #include <cstddef>
- #include <type_traits>
- #include <cstdlib>
- #include <new>
- #include <climits>
- template <class C>
- class test_compare
- : private C
- {
- int data_;
- public:
- explicit test_compare(int data = 0) : data_(data) {}
- typename C::result_type
- operator()(typename std::add_lvalue_reference<const typename C::first_argument_type>::type x,
- typename std::add_lvalue_reference<const typename C::second_argument_type>::type y) const
- {return C::operator()(x, y);}
- bool operator==(const test_compare& c) const
- {return data_ == c.data_;}
- };
- template <class C>
- class non_const_compare
- {
- // operator() deliberately not marked as 'const'
- bool operator()(const C& x, const C& y) { return x < y; }
- };
- #endif // TEST_COMPARE_H
|