1 | // (C) Copyright 2009-2011 Frederic Bron. |
2 | // |
3 | // Use, modification and distribution are subject to the Boost Software License, |
4 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
5 | // http://www.boost.org/LICENSE_1_0.txt). |
6 | // |
7 | // See http://www.boost.org/libs/type_traits for most recent version including documentation. |
8 | |
9 | #ifndef BOOST_TT_HAS_EQUAL_TO_HPP_INCLUDED |
10 | #define BOOST_TT_HAS_EQUAL_TO_HPP_INCLUDED |
11 | |
12 | #define BOOST_TT_TRAIT_NAME has_equal_to |
13 | #define BOOST_TT_TRAIT_OP == |
14 | #define BOOST_TT_FORBIDDEN_IF\ |
15 | (\ |
16 | /* Lhs==pointer and Rhs==fundamental */\ |
17 | (\ |
18 | ::boost::is_pointer< Lhs_noref >::value && \ |
19 | ::boost::is_fundamental< Rhs_nocv >::value\ |
20 | ) || \ |
21 | /* Rhs==pointer and Lhs==fundamental */\ |
22 | (\ |
23 | ::boost::is_pointer< Rhs_noref >::value && \ |
24 | ::boost::is_fundamental< Lhs_nocv >::value\ |
25 | ) || \ |
26 | /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\ |
27 | (\ |
28 | ::boost::is_pointer< Lhs_noref >::value && \ |
29 | ::boost::is_pointer< Rhs_noref >::value && \ |
30 | (! \ |
31 | (\ |
32 | ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value || \ |
33 | ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value || \ |
34 | ::boost::is_same< Lhs_noptr, Rhs_noptr >::value || \ |
35 | ::boost::is_void< Lhs_noptr >::value || \ |
36 | ::boost::is_void< Rhs_noptr >::value\ |
37 | )\ |
38 | )\ |
39 | ) || \ |
40 | (\ |
41 | ::boost::type_traits_detail::is_likely_stateless_lambda<Lhs_noref>::value\ |
42 | )\ |
43 | ) |
44 | |
45 | |
46 | #include <boost/type_traits/detail/has_binary_operator.hpp> |
47 | |
48 | #undef BOOST_TT_TRAIT_NAME |
49 | #undef BOOST_TT_TRAIT_OP |
50 | #undef BOOST_TT_FORBIDDEN_IF |
51 | |
52 | #endif |
53 | |