File indexing completed on 2025-01-18 09:41:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 namespace boost { namespace mpl {
0013
0014 template<
0015 typename Tag1
0016 , typename Tag2
0017 >
0018 struct equal_to_impl
0019 : if_c<
0020 ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
0021 > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
0022 )
0023
0024 , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
0025 , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
0026 >::type
0027 {
0028 };
0029
0030
0031 template<> struct equal_to_impl< na,na >
0032 {
0033 template< typename U1, typename U2 > struct apply
0034 {
0035 typedef apply type;
0036 BOOST_STATIC_CONSTANT(int, value = 0);
0037 };
0038 };
0039
0040 template<> struct equal_to_impl< na,integral_c_tag >
0041 {
0042 template< typename U1, typename U2 > struct apply
0043 {
0044 typedef apply type;
0045 BOOST_STATIC_CONSTANT(int, value = 0);
0046 };
0047 };
0048
0049 template<> struct equal_to_impl< integral_c_tag,na >
0050 {
0051 template< typename U1, typename U2 > struct apply
0052 {
0053 typedef apply type;
0054 BOOST_STATIC_CONSTANT(int, value = 0);
0055 };
0056 };
0057
0058 template< typename T > struct equal_to_tag
0059 {
0060 typedef typename T::tag type;
0061 };
0062
0063 template<
0064 typename BOOST_MPL_AUX_NA_PARAM(N1)
0065 , typename BOOST_MPL_AUX_NA_PARAM(N2)
0066 >
0067 struct equal_to
0068
0069 : equal_to_impl<
0070 typename equal_to_tag<N1>::type
0071 , typename equal_to_tag<N2>::type
0072 >::template apply< N1,N2 >::type
0073 {
0074 BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
0075
0076 };
0077
0078 BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
0079
0080 }}
0081
0082 namespace boost { namespace mpl {
0083
0084 template<>
0085 struct equal_to_impl< integral_c_tag,integral_c_tag >
0086 {
0087 template< typename N1, typename N2 > struct apply
0088
0089 : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
0090 {
0091 };
0092 };
0093
0094 }}