namespace borg { //! Coreementation details. namespace detail { using namespace type_traits; //! Is type T basically the same as type U? template<typename T, typename U> struct is_basically_same_impl { BOOST_STATIC_CONSTANT(bool, value = (is_same< typename remove_const_reference<T>::type, typename remove_const_reference<U>::type >::value)); }; } //---------------------------------------------------------------------------- //! Declare the is_basically_same<T, U> metafunction. //---------------------------------------------------------------------------- template<typename T, typename U> struct is_basically_same BOOST_TT_AUX_BOOL_C_BASE((detail::is_basically_same_impl<T, U>::value)) { BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL((detail::is_basically_same_impl<T, U>::value)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, is_basically_same, (T, U)) }; } // namespace borg
, typename BOOST_MPL_AUX_NA_PARAM(F1) , typename BOOST_MPL_AUX_NA_PARAM(F2) > struct eval_if #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \ ) { typedef typename if_<C,F1,F2>::type f_; typedef typename f_::type type; #else : if_<C,F1,F2>::type { #endif BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2)) }; // (almost) copy & paste in order to save one more // recursively nested template instantiation to user template< bool C , typename F1 , typename F2 > struct eval_if_c #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \ ) {
#if BOOST_PP_ITERATION_DEPTH() == 1 # define i_ BOOST_PP_FRAME_ITERATION(1) template< typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T) > struct BOOST_PP_CAT(apply,i_) : BOOST_PP_CAT(apply_wrap,i_)< typename lambda<F>::type AUX778076_APPLY_N_COMMA_PARAMS(i_, T) > { BOOST_MPL_AUX_LAMBDA_SUPPORT( BOOST_PP_INC(i_) , BOOST_PP_CAT(apply,i_) , (F AUX778076_APPLY_N_COMMA_PARAMS(i_,T)) ) }; #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY /// primary template (not a specialization!) template< typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T) > struct apply : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) > {