mirror of
https://github.com/boostorg/mpl.git
synced 2025-08-05 15:54:39 +02:00
support for N-ary numeric metafunctions for no-CTPS compilers
[SVN r26546]
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
|
||||||
# include <boost/mpl/numeric_cast.hpp>
|
# include <boost/mpl/numeric_cast.hpp>
|
||||||
# include <boost/mpl/apply_wrap.hpp>
|
# include <boost/mpl/apply_wrap.hpp>
|
||||||
# include <boost/mpl/eval_if.hpp>
|
# include <boost/mpl/if.hpp>
|
||||||
# include <boost/mpl/tag.hpp>
|
# include <boost/mpl/tag.hpp>
|
||||||
# include <boost/mpl/aux_/numeric_cast_utils.hpp>
|
# include <boost/mpl/aux_/numeric_cast_utils.hpp>
|
||||||
# include <boost/mpl/aux_/na.hpp>
|
# include <boost/mpl/aux_/na.hpp>
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
# include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
|
# include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
|
||||||
# include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
|
# include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
|
||||||
# include <boost/mpl/aux_/preprocessor/repeat.hpp>
|
# include <boost/mpl/aux_/preprocessor/repeat.hpp>
|
||||||
|
# include <boost/mpl/aux_/preprocessor/ext_params.hpp>
|
||||||
# include <boost/mpl/aux_/preprocessor/params.hpp>
|
# include <boost/mpl/aux_/preprocessor/params.hpp>
|
||||||
# include <boost/mpl/aux_/preprocessor/enum.hpp>
|
# include <boost/mpl/aux_/preprocessor/enum.hpp>
|
||||||
# include <boost/mpl/aux_/preprocessor/add.hpp>
|
# include <boost/mpl/aux_/preprocessor/add.hpp>
|
||||||
@@ -51,16 +52,13 @@
|
|||||||
# include <boost/mpl/aux_/config/workaround.hpp>
|
# include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
# include <boost/preprocessor/dec.hpp>
|
# include <boost/preprocessor/dec.hpp>
|
||||||
|
# include <boost/preprocessor/inc.hpp>
|
||||||
# include <boost/preprocessor/iterate.hpp>
|
# include <boost/preprocessor/iterate.hpp>
|
||||||
# include <boost/preprocessor/cat.hpp>
|
# include <boost/preprocessor/cat.hpp>
|
||||||
|
|
||||||
|
|
||||||
#if !defined(AUX778076_OP_ARITY)
|
#if !defined(AUX778076_OP_ARITY)
|
||||||
# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
# define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
|
||||||
# define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
|
|
||||||
# else
|
|
||||||
# define AUX778076_OP_ARITY 2
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(AUX778076_OP_IMPL_NAME)
|
#if !defined(AUX778076_OP_IMPL_NAME)
|
||||||
@@ -81,12 +79,12 @@ template<
|
|||||||
, BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
|
, BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
|
||||||
>
|
>
|
||||||
struct AUX778076_OP_IMPL_NAME
|
struct AUX778076_OP_IMPL_NAME
|
||||||
: eval_if_c<
|
: if_c<
|
||||||
( tag1_ > tag2_ )
|
( tag1_ > tag2_ )
|
||||||
#else
|
#else
|
||||||
>
|
>
|
||||||
struct AUX778076_OP_IMPL_NAME
|
struct AUX778076_OP_IMPL_NAME
|
||||||
: eval_if_c<
|
: if_c<
|
||||||
( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
|
( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
|
||||||
> BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
|
> BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
|
||||||
)
|
)
|
||||||
@@ -160,13 +158,9 @@ template< typename T > struct AUX778076_OP_TAG_NAME
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if AUX778076_OP_ARITY == 2
|
#if AUX778076_OP_ARITY != 2
|
||||||
template<
|
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
|
||||||
>
|
|
||||||
struct AUX778076_OP_NAME
|
|
||||||
#else
|
|
||||||
|
|
||||||
# define AUX778076_OP_RIGHT_OPERAND(unused, i, N) , BOOST_PP_CAT(N, BOOST_MPL_PP_ADD(i, 2))>
|
# define AUX778076_OP_RIGHT_OPERAND(unused, i, N) , BOOST_PP_CAT(N, BOOST_MPL_PP_ADD(i, 2))>
|
||||||
# define AUX778076_OP_N_CALLS(i, N) \
|
# define AUX778076_OP_N_CALLS(i, N) \
|
||||||
@@ -196,7 +190,54 @@ struct AUX778076_OP_NAME
|
|||||||
# undef AUX778076_OP_N_CALLS
|
# undef AUX778076_OP_N_CALLS
|
||||||
# undef AUX778076_OP_RIGHT_OPERAND
|
# undef AUX778076_OP_RIGHT_OPERAND
|
||||||
|
|
||||||
#endif // AUX778076_OP_ARITY == 2
|
# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
>
|
||||||
|
struct BOOST_PP_CAT(AUX778076_OP_NAME,2);
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
|
||||||
|
>
|
||||||
|
struct AUX778076_OP_NAME
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
|
||||||
|
, AUX778076_OP_NAME<
|
||||||
|
BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
|
||||||
|
, BOOST_MPL_PP_EXT_PARAMS(3, BOOST_PP_INC(AUX778076_OP_ARITY), N)
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
AUX778076_OP_ARITY
|
||||||
|
, AUX778076_OP_NAME
|
||||||
|
, ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct BOOST_PP_CAT(AUX778076_OP_NAME,2)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else // AUX778076_OP_ARITY == 2
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
>
|
||||||
|
struct AUX778076_OP_NAME
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
|
#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
|
||||||
: AUX778076_OP_IMPL_NAME<
|
: AUX778076_OP_IMPL_NAME<
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitand_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitand_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitand_
|
struct bitand_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitand_2< N1,N2 >
|
||||||
|
, bitand_<
|
||||||
|
bitand_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitand_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitand_impl<
|
bitand_impl<
|
||||||
typename bitand_tag<N1>::type
|
typename bitand_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitand_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitand_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitor_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitor_
|
struct bitor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitor_2< N1,N2 >
|
||||||
|
, bitor_<
|
||||||
|
bitor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitor_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitor_impl<
|
bitor_impl<
|
||||||
typename bitor_tag<N1>::type
|
typename bitor_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitor_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitxor_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitxor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitxor_
|
struct bitxor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitxor_2< N1,N2 >
|
||||||
|
, bitxor_<
|
||||||
|
bitxor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitxor_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitxor_impl<
|
bitxor_impl<
|
||||||
typename bitxor_tag<N1>::type
|
typename bitxor_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitxor_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitxor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct divides_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct divides2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct divides
|
struct divides
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, divides2< N1,N2 >
|
||||||
|
, divides<
|
||||||
|
divides2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct divides2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
divides_impl<
|
divides_impl<
|
||||||
typename divides_tag<N1>::type
|
typename divides_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct divides
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, divides)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct minus_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct minus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct minus
|
struct minus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, minus2< N1,N2 >
|
||||||
|
, minus<
|
||||||
|
minus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct minus2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
minus_impl<
|
minus_impl<
|
||||||
typename minus_tag<N1>::type
|
typename minus_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct minus
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, minus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct plus_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct plus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct plus
|
struct plus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, plus2< N1,N2 >
|
||||||
|
, plus<
|
||||||
|
plus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct plus2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
plus_impl<
|
plus_impl<
|
||||||
typename plus_tag<N1>::type
|
typename plus_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct plus
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, plus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct times_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct times2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct times
|
struct times
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, times2< N1,N2 >
|
||||||
|
, times<
|
||||||
|
times2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct times2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
times_impl<
|
times_impl<
|
||||||
typename times_tag<N1>::type
|
typename times_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct times
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, times)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitand_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitand_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitand_
|
struct bitand_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitand_2< N1,N2 >
|
||||||
|
, bitand_<
|
||||||
|
bitand_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitand_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitand_impl<
|
bitand_impl<
|
||||||
typename bitand_tag<N1>::type
|
typename bitand_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitand_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitand_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitor_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitor_
|
struct bitor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitor_2< N1,N2 >
|
||||||
|
, bitor_<
|
||||||
|
bitor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitor_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitor_impl<
|
bitor_impl<
|
||||||
typename bitor_tag<N1>::type
|
typename bitor_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitor_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,11 +61,41 @@ template< typename T > struct bitxor_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitxor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitxor_
|
struct bitxor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitxor_2< N1,N2 >
|
||||||
|
, bitxor_<
|
||||||
|
bitxor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitxor_2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
bitxor_impl<
|
bitxor_impl<
|
||||||
typename bitxor_tag<N1>::type
|
typename bitxor_tag<N1>::type
|
||||||
@@ -76,11 +106,15 @@ struct bitxor_
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitxor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct divides_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct divides2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct divides
|
struct divides
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, divides2< N1,N2 >
|
||||||
|
, divides<
|
||||||
|
divides2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct divides2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
divides_impl<
|
divides_impl<
|
||||||
typename divides_tag<N1>::type
|
typename divides_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct divides
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, divides)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct minus_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct minus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct minus
|
struct minus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, minus2< N1,N2 >
|
||||||
|
, minus<
|
||||||
|
minus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct minus2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
minus_impl<
|
minus_impl<
|
||||||
typename minus_tag<N1>::type
|
typename minus_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct minus
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, minus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct plus_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct plus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct plus
|
struct plus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, plus2< N1,N2 >
|
||||||
|
, plus<
|
||||||
|
plus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct plus2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
plus_impl<
|
plus_impl<
|
||||||
typename plus_tag<N1>::type
|
typename plus_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct plus
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, plus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,11 +60,41 @@ template< typename T > struct times_tag
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct times2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct times
|
struct times
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, times2< N1,N2 >
|
||||||
|
, times<
|
||||||
|
times2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct times2
|
||||||
: aux::msvc_eti_base< typename apply_wrap2<
|
: aux::msvc_eti_base< typename apply_wrap2<
|
||||||
times_impl<
|
times_impl<
|
||||||
typename times_tag<N1>::type
|
typename times_tag<N1>::type
|
||||||
@@ -75,11 +105,15 @@ struct times
|
|||||||
>::type >::type
|
>::type >::type
|
||||||
|
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, times)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -61,21 +61,55 @@ template< typename T > struct bitand_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitand_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitand_
|
struct bitand_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitand_2< N1,N2 >
|
||||||
|
, bitand_<
|
||||||
|
bitand_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitand_2
|
||||||
: bitand_impl<
|
: bitand_impl<
|
||||||
typename bitand_tag<N1>::type
|
typename bitand_tag<N1>::type
|
||||||
, typename bitand_tag<N2>::type
|
, typename bitand_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitand_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitand_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,21 +61,55 @@ template< typename T > struct bitor_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitor_
|
struct bitor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitor_2< N1,N2 >
|
||||||
|
, bitor_<
|
||||||
|
bitor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitor_2
|
||||||
: bitor_impl<
|
: bitor_impl<
|
||||||
typename bitor_tag<N1>::type
|
typename bitor_tag<N1>::type
|
||||||
, typename bitor_tag<N2>::type
|
, typename bitor_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -61,21 +61,55 @@ template< typename T > struct bitxor_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct bitxor_2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct bitxor_
|
struct bitxor_
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, bitxor_2< N1,N2 >
|
||||||
|
, bitxor_<
|
||||||
|
bitxor_2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct bitxor_2
|
||||||
: bitxor_impl<
|
: bitxor_impl<
|
||||||
typename bitxor_tag<N1>::type
|
typename bitxor_tag<N1>::type
|
||||||
, typename bitxor_tag<N2>::type
|
, typename bitxor_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, bitxor_
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, bitxor_)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -60,21 +60,55 @@ template< typename T > struct divides_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct divides2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct divides
|
struct divides
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, divides2< N1,N2 >
|
||||||
|
, divides<
|
||||||
|
divides2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct divides2
|
||||||
: divides_impl<
|
: divides_impl<
|
||||||
typename divides_tag<N1>::type
|
typename divides_tag<N1>::type
|
||||||
, typename divides_tag<N2>::type
|
, typename divides_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, divides
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, divides)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -60,21 +60,55 @@ template< typename T > struct minus_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct minus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct minus
|
struct minus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, minus2< N1,N2 >
|
||||||
|
, minus<
|
||||||
|
minus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct minus2
|
||||||
: minus_impl<
|
: minus_impl<
|
||||||
typename minus_tag<N1>::type
|
typename minus_tag<N1>::type
|
||||||
, typename minus_tag<N2>::type
|
, typename minus_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, minus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, minus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -60,21 +60,55 @@ template< typename T > struct plus_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct plus2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct plus
|
struct plus
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, plus2< N1,N2 >
|
||||||
|
, plus<
|
||||||
|
plus2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct plus2
|
||||||
: plus_impl<
|
: plus_impl<
|
||||||
typename plus_tag<N1>::type
|
typename plus_tag<N1>::type
|
||||||
, typename plus_tag<N2>::type
|
, typename plus_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, plus
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, plus)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -60,21 +60,55 @@ template< typename T > struct times_tag
|
|||||||
typedef typename T::tag type;
|
typedef typename T::tag type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// forward declaration
|
||||||
|
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
|
struct times2;
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||||
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
|
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||||
|
>
|
||||||
struct times
|
struct times
|
||||||
|
: if_<
|
||||||
|
is_na<N3>
|
||||||
|
, times2< N1,N2 >
|
||||||
|
, times<
|
||||||
|
times2< N1,N2 >
|
||||||
|
, N3, N4, N5
|
||||||
|
>
|
||||||
|
>::type
|
||||||
|
{
|
||||||
|
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, N3, N4, N5 )
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
template<
|
||||||
|
typename N1
|
||||||
|
, typename N2
|
||||||
|
>
|
||||||
|
struct times2
|
||||||
: times_impl<
|
: times_impl<
|
||||||
typename times_tag<N1>::type
|
typename times_tag<N1>::type
|
||||||
, typename times_tag<N2>::type
|
, typename times_tag<N2>::type
|
||||||
>::template apply< N1,N2 >::type
|
>::template apply< N1,N2 >::type
|
||||||
{
|
{
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times, (N1, N2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||||
|
5
|
||||||
|
, times
|
||||||
|
, ( N1, N2, na, na, na )
|
||||||
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, times)
|
BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct equal_to
|
struct equal_to
|
||||||
|
|
||||||
: equal_to_impl<
|
: equal_to_impl<
|
||||||
typename equal_to_tag<N1>::type
|
typename equal_to_tag<N1>::type
|
||||||
, typename equal_to_tag<N2>::type
|
, typename equal_to_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater
|
struct greater
|
||||||
|
|
||||||
: greater_impl<
|
: greater_impl<
|
||||||
typename greater_tag<N1>::type
|
typename greater_tag<N1>::type
|
||||||
, typename greater_tag<N2>::type
|
, typename greater_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct greater_equal
|
struct greater_equal
|
||||||
|
|
||||||
: greater_equal_impl<
|
: greater_equal_impl<
|
||||||
typename greater_equal_tag<N1>::type
|
typename greater_equal_tag<N1>::type
|
||||||
, typename greater_equal_tag<N2>::type
|
, typename greater_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less
|
struct less
|
||||||
|
|
||||||
: less_impl<
|
: less_impl<
|
||||||
typename less_tag<N1>::type
|
typename less_tag<N1>::type
|
||||||
, typename less_tag<N2>::type
|
, typename less_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct less_equal
|
struct less_equal
|
||||||
|
|
||||||
: less_equal_impl<
|
: less_equal_impl<
|
||||||
typename less_equal_tag<N1>::type
|
typename less_equal_tag<N1>::type
|
||||||
, typename less_equal_tag<N2>::type
|
, typename less_equal_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct modulus
|
struct modulus
|
||||||
|
|
||||||
: modulus_impl<
|
: modulus_impl<
|
||||||
typename modulus_tag<N1>::type
|
typename modulus_tag<N1>::type
|
||||||
, typename modulus_tag<N2>::type
|
, typename modulus_tag<N2>::type
|
||||||
|
@@ -65,6 +65,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct not_equal_to
|
struct not_equal_to
|
||||||
|
|
||||||
: not_equal_to_impl<
|
: not_equal_to_impl<
|
||||||
typename not_equal_to_tag<N1>::type
|
typename not_equal_to_tag<N1>::type
|
||||||
, typename not_equal_to_tag<N2>::type
|
, typename not_equal_to_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_left
|
struct shift_left
|
||||||
|
|
||||||
: shift_left_impl<
|
: shift_left_impl<
|
||||||
typename shift_left_tag<N1>::type
|
typename shift_left_tag<N1>::type
|
||||||
, typename shift_left_tag<N2>::type
|
, typename shift_left_tag<N2>::type
|
||||||
|
@@ -66,6 +66,7 @@ template<
|
|||||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||||
>
|
>
|
||||||
struct shift_right
|
struct shift_right
|
||||||
|
|
||||||
: shift_right_impl<
|
: shift_right_impl<
|
||||||
typename shift_right_tag<N1>::type
|
typename shift_right_tag<N1>::type
|
||||||
, typename shift_right_tag<N2>::type
|
, typename shift_right_tag<N2>::type
|
||||||
|
Reference in New Issue
Block a user