diff --git a/include/boost/mpl/apply.hpp b/include/boost/mpl/apply.hpp index 83509a3..d74065a 100644 --- a/include/boost/mpl/apply.hpp +++ b/include/boost/mpl/apply.hpp @@ -134,7 +134,6 @@ struct BOOST_PP_CAT(apply,i_) -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY /// primary template (not a specialization!) @@ -155,27 +154,6 @@ struct apply< F AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(i_, T, na) > }; #endif -# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -namespace aux { - -template<> -struct apply_chooser -{ - template< - typename F, AUX778076_APPLY_PARAMS(typename T) - > - struct result_ - { - typedef BOOST_PP_CAT(apply,i_)< - F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) - > type; - }; -}; - -} // namespace aux - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # undef i_ diff --git a/include/boost/mpl/apply_fwd.hpp b/include/boost/mpl/apply_fwd.hpp index 2587085..212003a 100644 --- a/include/boost/mpl/apply_fwd.hpp +++ b/include/boost/mpl/apply_fwd.hpp @@ -57,17 +57,11 @@ namespace boost { namespace mpl { BOOST_MPL_PP_PARAMS(n, param) \ /**/ -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) // forward declaration template< typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na) > struct apply; -#else -namespace aux { -template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser; -} -#endif #define BOOST_PP_ITERATION_PARAMS_1 \ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, )) diff --git a/include/boost/mpl/aux_/filter_iter.hpp b/include/boost/mpl/aux_/filter_iter.hpp index e4237f1..69422d8 100644 --- a/include/boost/mpl/aux_/filter_iter.hpp +++ b/include/boost/mpl/aux_/filter_iter.hpp @@ -48,7 +48,6 @@ struct next_filter_iter typedef filter_iter type; }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Iterator @@ -78,58 +77,6 @@ struct filter_iter< LastIterator,LastIterator,Predicate > typedef forward_iterator_tag category; }; -#else - -template< bool > -struct filter_iter_impl -{ - template< - typename Iterator - , typename LastIterator - , typename Predicate - > - struct result_ - { - typedef Iterator base; - typedef forward_iterator_tag category; - typedef typename next_filter_iter< - typename mpl::next::type - , LastIterator - , Predicate - >::type next; - - typedef typename deref::type type; - }; -}; - -template<> -struct filter_iter_impl< true > -{ - template< - typename Iterator - , typename LastIterator - , typename Predicate - > - struct result_ - { - typedef Iterator base; - typedef forward_iterator_tag category; - }; -}; - -template< - typename Iterator - , typename LastIterator - , typename Predicate - > -struct filter_iter - : filter_iter_impl< - ::boost::is_same::value - >::template result_< Iterator,LastIterator,Predicate > -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux diff --git a/include/boost/mpl/aux_/fold_impl_body.hpp b/include/boost/mpl/aux_/fold_impl_body.hpp index bb936a2..2d53aa8 100644 --- a/include/boost/mpl/aux_/fold_impl_body.hpp +++ b/include/boost/mpl/aux_/fold_impl_body.hpp @@ -56,7 +56,6 @@ template< > struct AUX778076_FOLD_IMPL_NAME; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) @@ -164,124 +163,6 @@ struct AUX778076_FOLD_IMPL_NAME # endif // BOOST_WORKAROUND(__BORLANDC__, < 0x600) -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< int N > -struct AUX778076_FOLD_CHUNK_NAME; - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (3,(0, BOOST_MPL_LIMIT_UNROLLING, )) -# include BOOST_PP_ITERATE() - -// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING -template< int N > -struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef AUX778076_FOLD_IMPL_NAME< - BOOST_MPL_LIMIT_UNROLLING - , First - , Last - , State - , ForwardOp - > chunk_; - - typedef AUX778076_FOLD_IMPL_NAME< - ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING ) - , typename chunk_::iterator - , Last - , typename chunk_::state - , ForwardOp - > res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - }; -}; - -// fallback implementation for sequences of unknown size -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step); - -template< - typename Last - , typename State - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) -{ - typedef Last iterator; - typedef State state; -}; - -template<> -struct AUX778076_FOLD_CHUNK_NAME<-1> -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef typename if_< - typename is_same::type - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step) - , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) - >::type res_; - - typedef typename res_::state state; - typedef typename res_::iterator iterator; - }; - -}; - -template< - typename First - , typename Last - , typename State - , typename ForwardOp - > -struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step) -{ - // can't inherit here - it breaks MSVC 7.0 - typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_< - typename mpl::next::type - , Last - , typename apply2::type - , ForwardOp - > chunk_; - - typedef typename chunk_::state state; - typedef typename chunk_::iterator iterator; -}; - -template< - int N - , typename First - , typename Last - , typename State - , typename ForwardOp - > -struct AUX778076_FOLD_IMPL_NAME - : AUX778076_FOLD_CHUNK_NAME - ::template result_ -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION }}} @@ -298,7 +179,6 @@ struct AUX778076_FOLD_IMPL_NAME # define n_ BOOST_PP_FRAME_ITERATION(1) -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename First @@ -317,30 +197,6 @@ struct AUX778076_FOLD_IMPL_NAME typedef BOOST_PP_CAT(iter,n_) iterator; }; -#else - -template<> struct AUX778076_FOLD_CHUNK_NAME -{ - template< - typename First - , typename Last - , typename State - , typename ForwardOp - > - struct result_ - { - typedef First iter0; - typedef State state0; - - BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused) - - typedef BOOST_PP_CAT(state,n_) state; - typedef BOOST_PP_CAT(iter,n_) iterator; - }; - -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # undef n_ diff --git a/include/boost/mpl/aux_/inserter_algorithm.hpp b/include/boost/mpl/aux_/inserter_algorithm.hpp index 20ae816..027dbc2 100644 --- a/include/boost/mpl/aux_/inserter_algorithm.hpp +++ b/include/boost/mpl/aux_/inserter_algorithm.hpp @@ -33,7 +33,6 @@ #include -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \ BOOST_MPL_AUX_COMMON_NAME_WKND(name) \ @@ -90,70 +89,5 @@ BOOST_MPL_AUX_NA_SPEC(arity, name) \ BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \ /**/ -#else - -# define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \ -BOOST_MPL_AUX_COMMON_NAME_WKND(name) \ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct def_##name##_impl \ - : if_< has_push_back \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -\ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct name \ -{ \ - typedef typename eval_if< \ - is_na \ - , def_##name##_impl \ - , aux::name##_impl \ - >::type type; \ -}; \ -\ -template< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \ - > \ -struct def_reverse_##name##_impl \ - : if_< has_push_back \ - , aux::reverse_##name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , back_inserter< typename clear::type > \ - > \ - , aux::name##_impl< \ - BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \ - , front_inserter< typename clear::type > \ - > \ - >::type \ -{ \ -}; \ -template< \ - BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \ - > \ -struct reverse_##name \ -{ \ - typedef typename eval_if< \ - is_na \ - , def_reverse_##name##_impl \ - , aux::reverse_##name##_impl \ - >::type type; \ -}; \ -BOOST_MPL_AUX_NA_SPEC(arity, name) \ -BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \ -/**/ - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #endif // BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/joint_iter.hpp b/include/boost/mpl/aux_/joint_iter.hpp index da5d3fc..216f3d6 100644 --- a/include/boost/mpl/aux_/joint_iter.hpp +++ b/include/boost/mpl/aux_/joint_iter.hpp @@ -23,7 +23,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Iterator1 @@ -66,49 +65,6 @@ struct next< joint_iter > typedef joint_iter< L1,L1,typename mpl::next::type > type; }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< - typename Iterator1 - , typename LastIterator1 - , typename Iterator2 - > -struct joint_iter; - -template< bool > struct joint_iter_impl -{ - template< typename I1, typename L1, typename I2 > struct result_ - { - typedef I1 base; - typedef forward_iterator_tag category; - typedef joint_iter< typename mpl::next::type,L1,I2 > next; - typedef typename deref::type type; - }; -}; - -template<> struct joint_iter_impl -{ - template< typename I1, typename L1, typename I2 > struct result_ - { - typedef I2 base; - typedef forward_iterator_tag category; - typedef joint_iter< L1,L1,typename mpl::next::type > next; - typedef typename deref::type type; - }; -}; - -template< - typename Iterator1 - , typename LastIterator1 - , typename Iterator2 - > -struct joint_iter - : joint_iter_impl< is_same::value > - ::template result_ -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter) diff --git a/include/boost/mpl/aux_/logical_op.hpp b/include/boost/mpl/aux_/logical_op.hpp index 11d8414..ced64cb 100644 --- a/include/boost/mpl/aux_/logical_op.hpp +++ b/include/boost/mpl/aux_/logical_op.hpp @@ -58,7 +58,6 @@ namespace boost { namespace mpl { namespace aux { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< bool C_, AUX778076_PARAMS(typename T, 1) > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) @@ -85,34 +84,6 @@ struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)< { }; -#else - -template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) -{ - template< AUX778076_PARAMS(typename T, 1) > struct result_ - : BOOST_PP_CAT(AUX778076_OP_VALUE1,_) - { - }; -}; - -template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) -{ - template< AUX778076_PARAMS(typename T, 1) > struct result_ - : BOOST_PP_CAT(AUX778076_OP_NAME,impl)< - BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value - >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) > - { - }; -}; - -template<> -struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) - ::result_< AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) > - : BOOST_PP_CAT(AUX778076_OP_VALUE2,_) -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux @@ -122,16 +93,10 @@ template< BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) > struct AUX778076_OP_NAME -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)< BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value , AUX778076_SHIFTED_PARAMS(T,0) > -#else - : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)< - BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value - >::template result_< AUX778076_SHIFTED_PARAMS(T,0) > -#endif { BOOST_MPL_AUX_LAMBDA_SUPPORT( BOOST_MPL_LIMIT_METAFUNCTION_ARITY diff --git a/include/boost/mpl/aux_/na.hpp b/include/boost/mpl/aux_/na.hpp index d96eb6f..cbbc9c9 100644 --- a/include/boost/mpl/aux_/na.hpp +++ b/include/boost/mpl/aux_/na.hpp @@ -45,7 +45,6 @@ struct is_not_na { }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename T, typename U > struct if_na { typedef T type; @@ -55,28 +54,6 @@ template< typename U > struct if_na { typedef U type; }; -#else -template< typename T > struct if_na_impl -{ - template< typename U > struct apply - { - typedef T type; - }; -}; - -template<> struct if_na_impl -{ - template< typename U > struct apply - { - typedef U type; - }; -}; - -template< typename T, typename U > struct if_na - : if_na_impl::template apply -{ -}; -#endif }} diff --git a/include/boost/mpl/aux_/numeric_op.hpp b/include/boost/mpl/aux_/numeric_op.hpp index d490d2d..2694a0c 100644 --- a/include/boost/mpl/aux_/numeric_op.hpp +++ b/include/boost/mpl/aux_/numeric_op.hpp @@ -92,7 +92,6 @@ template<> struct AUX778076_OP_IMPL_NAME }; }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Tag > struct AUX778076_OP_IMPL_NAME { template< typename U1, typename U2 > struct apply @@ -110,25 +109,6 @@ template< typename Tag > struct AUX778076_OP_IMPL_NAME BOOST_STATIC_CONSTANT(int, value = 0); }; }; -#else -template<> struct AUX778076_OP_IMPL_NAME -{ - template< typename U1, typename U2 > struct apply - { - typedef apply type; - BOOST_STATIC_CONSTANT(int, value = 0); - }; -}; - -template<> struct AUX778076_OP_IMPL_NAME -{ - template< typename U1, typename U2 > struct apply - { - typedef apply type; - BOOST_STATIC_CONSTANT(int, value = 0); - }; -}; -#endif #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ @@ -147,7 +127,6 @@ template< typename T > struct AUX778076_OP_TAG_NAME #if AUX778076_OP_ARITY != 2 -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # 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) \ @@ -177,44 +156,6 @@ struct AUX778076_OP_NAME # undef AUX778076_OP_N_CALLS # undef AUX778076_OP_RIGHT_OPERAND -# 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 - , BOOST_PP_CAT(AUX778076_OP_NAME,2) - , AUX778076_OP_NAME< - BOOST_PP_CAT(AUX778076_OP_NAME,2) - , 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 @@ -233,15 +174,11 @@ struct AUX778076_OP_NAME { #if AUX778076_OP_ARITY != 2 -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC( AUX778076_OP_ARITY , AUX778076_OP_NAME , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(2, N, na) ) ) -# else - BOOST_MPL_AUX_LAMBDA_SUPPORT(2, BOOST_PP_CAT(AUX778076_OP_NAME,2), (N1, N2)) -# endif #else BOOST_MPL_AUX_LAMBDA_SUPPORT(2, AUX778076_OP_NAME, (N1, N2)) diff --git a/include/boost/mpl/aux_/sequence_wrapper.hpp b/include/boost/mpl/aux_/sequence_wrapper.hpp index 33e61e3..e95be42 100644 --- a/include/boost/mpl/aux_/sequence_wrapper.hpp +++ b/include/boost/mpl/aux_/sequence_wrapper.hpp @@ -145,18 +145,11 @@ namespace boost { namespace mpl { #endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) // forward declaration template< AUX778076_SEQUENCE_DEFAULT_PARAMS() > struct AUX778076_SEQUENCE_NAME; -#else -namespace aux { -template< int N > -struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser); -} -#endif #define BOOST_PP_ITERATION_PARAMS_1 \ (3,(0, AUX778076_SEQUENCE_LIMIT, )) @@ -187,7 +180,6 @@ struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser); #else #define i_ BOOST_PP_FRAME_ITERATION(1) -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) #if i_ == AUX778076_SEQUENCE_LIMIT @@ -218,33 +210,6 @@ struct AUX778076_SEQUENCE_NAME< AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(i_) > #endif // i_ == AUX778076_SEQUENCE_LIMIT -# else - -namespace aux { - -template<> -struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser) -{ - template< - AUX778076_SEQUENCE_PARAMS() - > - struct result_ - { -#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER) - typedef typename AUX778076_SEQUENCE_NAME_N(i_)< - AUX778076_SEQUENCE_N_ARGS(i_) - >::type type; -#else - typedef AUX778076_SEQUENCE_NAME_N(i_)< - AUX778076_SEQUENCE_N_ARGS(i_) - >::type type; -#endif - }; -}; - -} // namespace aux - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #undef i_ #endif // BOOST_PP_IS_ITERATING diff --git a/include/boost/mpl/aux_/single_element_iter.hpp b/include/boost/mpl/aux_/single_element_iter.hpp index 432c47b..e10270d 100644 --- a/include/boost/mpl/aux_/single_element_iter.hpp +++ b/include/boost/mpl/aux_/single_element_iter.hpp @@ -25,7 +25,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) namespace aux { @@ -68,49 +67,6 @@ struct distance< aux::sel_iter, aux::sel_iter > { }; -#else - -namespace aux { - -struct sel_iter_tag; - -template< typename T, int is_last_ > -struct sel_iter -{ - enum { pos_ = is_last_ }; - typedef aux::sel_iter_tag tag; - typedef random_access_iterator_tag category; - - typedef sel_iter next; - typedef sel_iter prior; - typedef T type; -}; - -} // namespace aux - -template<> struct advance_impl -{ - template< typename Iterator, typename N > struct apply - { - enum { pos_ = Iterator::pos_, n_ = N::value }; - typedef aux::sel_iter< - typename Iterator::type - , (pos_ + n_) - > type; - }; -}; - -template<> struct distance_impl -{ - template< typename Iter1, typename Iter2 > struct apply - { - enum { pos1_ = Iter1::pos_, pos2_ = Iter2::pos_ }; - typedef int_<( pos2_ - pos1_ )> type; - BOOST_STATIC_CONSTANT(int, value = ( pos2_ - pos1_ )); - }; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION }} diff --git a/include/boost/mpl/aux_/transform_iter.hpp b/include/boost/mpl/aux_/transform_iter.hpp index e42fcc6..3a591ab 100644 --- a/include/boost/mpl/aux_/transform_iter.hpp +++ b/include/boost/mpl/aux_/transform_iter.hpp @@ -26,7 +26,6 @@ namespace boost { namespace mpl { namespace aux { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Iterator @@ -55,64 +54,6 @@ struct transform_iter< LastIterator,LastIterator,F > typedef forward_iterator_tag category; }; -#else - -template< - typename Iterator - , typename LastIterator - , typename F - > -struct transform_iter; - -template< bool > -struct transform_iter_impl -{ - template< - typename Iterator - , typename LastIterator - , typename F - > - struct result_ - { - typedef Iterator base; - typedef forward_iterator_tag category; - typedef transform_iter< typename mpl::next::type,LastIterator,F > next; - - typedef typename apply1< - F - , typename deref::type - >::type type; - }; -}; - -template<> -struct transform_iter_impl -{ - template< - typename Iterator - , typename LastIterator - , typename F - > - struct result_ - { - typedef Iterator base; - typedef forward_iterator_tag category; - }; -}; - -template< - typename Iterator - , typename LastIterator - , typename F - > -struct transform_iter - : transform_iter_impl< - ::boost::is_same::value - >::template result_< Iterator,LastIterator,F > -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux diff --git a/include/boost/mpl/aux_/type_wrapper.hpp b/include/boost/mpl/aux_/type_wrapper.hpp index f3ac307..e28a0b4 100644 --- a/include/boost/mpl/aux_/type_wrapper.hpp +++ b/include/boost/mpl/aux_/type_wrapper.hpp @@ -24,7 +24,6 @@ template< typename T > struct type_wrapper typedef T type; }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) // agurt 08/may/03: a complicated way to extract the wrapped type; need it // mostly for the sake of GCC (3.2.x), which ICEs if you try to extract the // nested 'type' from 'type_wrapper' when the latter was the result of a @@ -35,12 +34,6 @@ template< typename T > struct wrapped_type< type_wrapper > { typedef T type; }; -#else -template< typename W > struct wrapped_type -{ - typedef typename W::type type; -}; -#endif }}} diff --git a/include/boost/mpl/bind.hpp b/include/boost/mpl/bind.hpp index b2ece5c..74e3207 100644 --- a/include/boost/mpl/bind.hpp +++ b/include/boost/mpl/bind.hpp @@ -115,7 +115,6 @@ namespace boost { namespace mpl { namespace aux { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename T, AUX778076_BIND_PARAMS(typename U) @@ -167,123 +166,6 @@ struct resolve_bind_arg< bind,AUX778076_BIND_PARAMS( }; #endif -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -// agurt, 15/jan/02: it's not a intended to be used as a function class, and -// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't -// work), so I went with the 'result_' here, and in all other similar cases -template< bool > -struct resolve_arg_impl -{ - template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_ - { - typedef T type; - }; -}; - -template<> -struct resolve_arg_impl -{ - template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_ - { - typedef typename AUX778076_APPLY< - T - , AUX778076_BIND_PARAMS(U) - >::type type; - }; -}; - -// for 'resolve_bind_arg' -template< typename T > struct is_bind_template; - -template< - typename T, AUX778076_BIND_PARAMS(typename U) - > -struct resolve_bind_arg - : resolve_arg_impl< is_bind_template::value > - ::template result_< T,AUX778076_BIND_PARAMS(U) > -{ -}; - -# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT) - -template< typename T > -struct replace_unnamed_arg_impl -{ - template< typename Arg > struct result_ - { - typedef Arg next; - typedef T type; - }; -}; - -template<> -struct replace_unnamed_arg_impl< arg<-1> > -{ - template< typename Arg > struct result_ - { - typedef typename next::type next; - typedef Arg type; - }; -}; - -template< typename T, typename Arg > -struct replace_unnamed_arg - : replace_unnamed_arg_impl::template result_ -{ -}; - -# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT - -// agurt, 10/mar/02: the forward declaration has to appear before any of -// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it -template< int arity_ > struct bind_chooser; - -aux::no_tag is_bind_helper(...); -template< typename T > aux::no_tag is_bind_helper(protect*); - -// overload for "main" form -// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload -// in case if we use 'aux::type_wrapper< bind<...> >' here, and all -// 'bind' instantiations form a complete type anyway -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) -template< - typename F, AUX778076_BIND_PARAMS(typename T) - > -aux::yes_tag is_bind_helper(bind*); -#endif - -template< int N > -aux::yes_tag is_bind_helper(arg*); - -template< bool is_ref_ = true > -struct is_bind_template_impl -{ - template< typename T > struct result_ - { - BOOST_STATIC_CONSTANT(bool, value = false); - }; -}; - -template<> -struct is_bind_template_impl -{ - template< typename T > struct result_ - { - BOOST_STATIC_CONSTANT(bool, value = - sizeof(aux::is_bind_helper(static_cast(0))) - == sizeof(aux::yes_tag) - ); - }; -}; - -template< typename T > struct is_bind_template - : is_bind_template_impl< ::boost::detail::is_reference_impl::value > - ::template result_ -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux @@ -450,7 +332,6 @@ struct BOOST_PP_CAT(bind,i_) namespace aux { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U) @@ -463,15 +344,6 @@ struct resolve_bind_arg< typedef typename AUX778076_APPLY::type type; }; -#else - -template< - typename F AUX778076_BIND_N_PARAMS(i_, typename T) - > -aux::yes_tag -is_bind_helper(BOOST_PP_CAT(bind,i_)*); - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace aux @@ -479,7 +351,6 @@ BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_)) BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_)) # if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY /// primary template (not a specialization!) @@ -500,25 +371,6 @@ struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) > }; #endif -# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -namespace aux { - -template<> -struct bind_chooser -{ - template< - typename F, AUX778076_BIND_PARAMS(typename T) - > - struct result_ - { - typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type; - }; -}; - -} // namespace aux - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE #endif // AUX778076_SPEC_NAME diff --git a/include/boost/mpl/if.hpp b/include/boost/mpl/if.hpp index b6bdf6c..b0d4b13 100644 --- a/include/boost/mpl/if.hpp +++ b/include/boost/mpl/if.hpp @@ -24,7 +24,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< bool C @@ -72,61 +71,6 @@ struct if_ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3)) }; -#else - -// no partial class template specialization - -namespace aux { - -template< bool C > -struct if_impl -{ - template< typename T1, typename T2 > struct result_ - { - typedef T1 type; - }; -}; - -template<> -struct if_impl -{ - template< typename T1, typename T2 > struct result_ - { - typedef T2 type; - }; -}; - -} // namespace aux - -template< - bool C_ - , typename T1 - , typename T2 - > -struct if_c -{ - typedef typename aux::if_impl< C_ > - ::template result_::type type; -}; - -// (almost) copy & paste in order to save one more -// recursively nested template instantiation to user -template< - typename BOOST_MPL_AUX_NA_PARAM(C_) - , typename BOOST_MPL_AUX_NA_PARAM(T1) - , typename BOOST_MPL_AUX_NA_PARAM(T2) - > -struct if_ -{ - enum { msvc_wknd_ = BOOST_MPL_AUX_MSVC_VALUE_WKND(C_)::value }; - - typedef typename aux::if_impl< BOOST_MPL_AUX_STATIC_CAST(bool, msvc_wknd_) > - ::template result_::type type; - - BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C_,T1,T2)) -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_MPL_AUX_NA_SPEC(3, if_) diff --git a/include/boost/mpl/inherit.hpp b/include/boost/mpl/inherit.hpp index b542737..19ee5b2 100644 --- a/include/boost/mpl/inherit.hpp +++ b/include/boost/mpl/inherit.hpp @@ -60,7 +60,6 @@ namespace boost { namespace mpl { // inherit::type == struct unspecified : her, my {}; // inherit::type == empty_base -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename BOOST_MPL_AUX_NA_PARAM(T1) @@ -96,66 +95,6 @@ struct inherit2 BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base,empty_base)) }; -#else - -namespace aux { - -template< bool C1, bool C2 > -struct inherit2_impl -{ - template< typename Derived, typename T1, typename T2 > struct result_ - : T1, T2 - { - typedef Derived type_; - }; -}; - -template<> -struct inherit2_impl -{ - template< typename Derived, typename T1, typename T2 > struct result_ - : T1 - { - typedef T1 type_; - }; -}; - -template<> -struct inherit2_impl -{ - template< typename Derived, typename T1, typename T2 > struct result_ - : T2 - { - typedef T2 type_; - }; -}; - -template<> -struct inherit2_impl -{ - template< typename Derived, typename T1, typename T2 > struct result_ - { - typedef T1 type_; - }; -}; - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(T1) - , typename BOOST_MPL_AUX_NA_PARAM(T2) - > -struct inherit2 - : aux::inherit2_impl< - is_empty_base::value - , is_empty_base::value - >::template result_< inherit2,T1,T2 > -{ - typedef typename inherit2::type_ type; - BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1,T2)) -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_MPL_AUX_NA_SPEC(2, inherit2) diff --git a/include/boost/mpl/is_placeholder.hpp b/include/boost/mpl/is_placeholder.hpp index 533397d..b816c0c 100644 --- a/include/boost/mpl/is_placeholder.hpp +++ b/include/boost/mpl/is_placeholder.hpp @@ -23,7 +23,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename T > struct is_placeholder @@ -37,29 +36,6 @@ struct is_placeholder< arg > { }; -#else - -namespace aux { - -aux::no_tag is_placeholder_helper(...); - -template< int N > -aux::yes_tag is_placeholder_helper(aux::type_wrapper< arg >*); - -} // namespace aux - -template< typename T > -struct is_placeholder -{ - static aux::type_wrapper* get(); - BOOST_STATIC_CONSTANT(bool, value = - sizeof(aux::is_placeholder_helper(get())) == sizeof(aux::yes_tag) - ); - - typedef bool_ type; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION }} diff --git a/include/boost/mpl/list/aux_/iterator.hpp b/include/boost/mpl/list/aux_/iterator.hpp index 170a320..9f52c87 100644 --- a/include/boost/mpl/list/aux_/iterator.hpp +++ b/include/boost/mpl/list/aux_/iterator.hpp @@ -24,7 +24,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Node > struct l_iter @@ -45,18 +44,6 @@ struct next< l_iter > typedef l_iter< typename Node::next > type; }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< typename Node > -struct l_iter -{ - typedef aux::l_iter_tag tag; - typedef forward_iterator_tag category; - typedef typename Node::item type; - typedef l_iter< typename mpl::next::type > next; -}; - -#endif template<> struct l_iter diff --git a/include/boost/mpl/map/aux_/at_impl.hpp b/include/boost/mpl/map/aux_/at_impl.hpp index 03f1258..55bc1f9 100644 --- a/include/boost/mpl/map/aux_/at_impl.hpp +++ b/include/boost/mpl/map/aux_/at_impl.hpp @@ -79,29 +79,12 @@ struct item_by_order #else // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Map, long n > struct m_at { typedef void_ type; }; -# else - -template< long n > struct m_at_impl -{ - template< typename Map > struct result_ - { - typedef void_ type; - }; -}; - -template< typename Map, long n > struct m_at -{ - typedef typename m_at_impl::result_::type type; -}; - -# endif template<> diff --git a/include/boost/mpl/map/aux_/item.hpp b/include/boost/mpl/map/aux_/item.hpp index d0df522..ddb4f7a 100644 --- a/include/boost/mpl/map/aux_/item.hpp +++ b/include/boost/mpl/map/aux_/item.hpp @@ -73,28 +73,10 @@ struct m_mask #else // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< long n, typename Key, typename T, typename Base > struct m_item; -# else - -template< long n > -struct m_item_impl -{ - template< typename Key, typename T, typename Base > - struct result_; -}; - -template< long n, typename Key, typename T, typename Base > -struct m_item - : m_item_impl::result_ -{ -}; - - -# endif template< typename Key, typename T, typename Base > diff --git a/include/boost/mpl/map/aux_/iterator.hpp b/include/boost/mpl/map/aux_/iterator.hpp index af99f15..491f821 100644 --- a/include/boost/mpl/map/aux_/iterator.hpp +++ b/include/boost/mpl/map/aux_/iterator.hpp @@ -28,7 +28,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Map @@ -83,85 +82,6 @@ struct next< m_iter > { }; -#else - -template< - typename Map - , long order - , long max_order - > -struct next_order; - -template< - typename Map - , long order - , long max_order - > -struct next_order_impl - : if_< - is_void_< typename item_by_order::type > - , next_order - , long_ - >::type - { - }; - -template< - typename Map - , long order - , long max_order - > -struct next_order - : if_c< - (order != max_order) - , next_order_impl - , long_ - >::type -{ -}; - - -template< - typename Map - , long order - , long max_order - > -struct m_iter; - -struct m_iter_empty_base {}; - -template< - typename Map - , long order - , long max_order - > -struct m_iter_base -{ - typedef typename item_by_order::type type; - - typedef m_iter< - Map - , next_order::value - , max_order - > next; -}; - -template< - typename Map - , long order - , long max_order - > -struct m_iter - : if_c< - (order == max_order) - , m_iter_empty_base - , m_iter_base - >::type -{ - typedef forward_iterator_tag category; -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION }} diff --git a/include/boost/mpl/map/aux_/numbered.hpp b/include/boost/mpl/map/aux_/numbered.hpp index f4512a5..1f2506d 100644 --- a/include/boost/mpl/map/aux_/numbered.hpp +++ b/include/boost/mpl/map/aux_/numbered.hpp @@ -49,7 +49,6 @@ struct BOOST_PP_CAT(map,i_) #else // "brute force" implementation -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Map> struct m_at @@ -64,28 +63,6 @@ struct m_item typedef pair BOOST_PP_CAT(item,BOOST_PP_DEC(i_)); }; -# else - -template<> -struct m_at_impl -{ - template< typename Map > struct result_ - { - typedef typename Map::BOOST_PP_CAT(item,BOOST_PP_DEC(i_)) type; - }; -}; - -template<> -struct m_item_impl -{ - template< typename Key, typename T, typename Base > struct result_ - : m_item_ - { - typedef pair BOOST_PP_CAT(item,BOOST_PP_DEC(i_)); - }; -}; - -# endif template< BOOST_PP_ENUM_PARAMS(i_, typename P) diff --git a/include/boost/mpl/multiplies.hpp b/include/boost/mpl/multiplies.hpp index 53c39d9..4e30f11 100644 --- a/include/boost/mpl/multiplies.hpp +++ b/include/boost/mpl/multiplies.hpp @@ -25,11 +25,7 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY -#else -# define AUX778076_OP_ARITY 2 -#endif template< BOOST_MPL_PP_DEFAULT_PARAMS(AUX778076_OP_ARITY, typename N, na) diff --git a/include/boost/mpl/quote.hpp b/include/boost/mpl/quote.hpp index 242c2e7..5f39ee6 100644 --- a/include/boost/mpl/quote.hpp +++ b/include/boost/mpl/quote.hpp @@ -58,7 +58,6 @@ namespace boost { namespace mpl { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename T, bool has_type_ > struct quote_impl @@ -82,25 +81,6 @@ struct quote_impl typedef T type; }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template< bool > struct quote_impl -{ - template< typename T > struct result_ - : T - { - }; -}; - -template<> struct quote_impl -{ - template< typename T > struct result_ - { - typedef T type; - }; -}; - -#endif #define BOOST_PP_ITERATION_PARAMS_1 \ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, )) diff --git a/include/boost/mpl/set/aux_/iterator.hpp b/include/boost/mpl/set/aux_/iterator.hpp index 79cbf70..6711c8c 100644 --- a/include/boost/mpl/set/aux_/iterator.hpp +++ b/include/boost/mpl/set/aux_/iterator.hpp @@ -46,7 +46,6 @@ template< typename Set, typename Tail > struct s_iter_impl }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Set, typename Tail > struct next< s_iter > @@ -70,25 +69,6 @@ template< typename Set > struct s_iter > typedef forward_iterator_tag category; }; -#else - -template< typename Set > -struct s_end_iter -{ - typedef forward_iterator_tag category; - typedef s_iter > next; -}; - -template< typename Set, typename Tail > struct s_iter - : if_< - is_same< Tail,set0<> > - , s_end_iter - , s_iter_impl - >::type -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION }} diff --git a/include/boost/mpl/unpack_args.hpp b/include/boost/mpl/unpack_args.hpp index a56f3f6..2c69533 100644 --- a/include/boost/mpl/unpack_args.hpp +++ b/include/boost/mpl/unpack_args.hpp @@ -57,15 +57,8 @@ namespace boost { namespace mpl { namespace aux { -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< int size, typename F, typename Args > struct unpack_args_impl; -#else -template< int size > struct unpack_args_impl -{ - template< typename F, typename Args > struct apply; -}; -#endif #define BOOST_PP_ITERATION_PARAMS_1 \ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, )) @@ -80,12 +73,7 @@ struct unpack_args { template< typename Args > struct apply #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) : aux::unpack_args_impl< size::value,F,Args > -# else - : aux::unpack_args_impl< size::value > - ::template apply< F,Args > -# endif { #else // BOOST_MPL_CFG_NO_NESTED_FORWARDING { @@ -117,7 +105,6 @@ BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args) # define i_ BOOST_PP_FRAME_ITERATION(1) -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename F, typename Args > struct unpack_args_impl @@ -128,20 +115,6 @@ struct unpack_args_impl { }; -#else - -template<> struct unpack_args_impl -{ - template< typename F, typename Args > struct apply - : BOOST_PP_CAT(apply,i_)< - F - AUX778076_UNPACKED_ARGS(i_, Args) - > - { - }; -}; - -#endif # undef i_ diff --git a/include/boost/mpl/vector/aux_/iterator.hpp b/include/boost/mpl/vector/aux_/iterator.hpp index 94712ca..83d0de4 100644 --- a/include/boost/mpl/vector/aux_/iterator.hpp +++ b/include/boost/mpl/vector/aux_/iterator.hpp @@ -45,7 +45,6 @@ struct v_iter }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template< typename Vector @@ -88,31 +87,6 @@ struct distance< v_iter, v_iter > { }; -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -template<> struct advance_impl -{ - template< typename Iterator, typename N > struct apply - { - enum { pos_ = Iterator::pos_, n_ = N::value }; - typedef v_iter< - typename Iterator::vector_ - , (pos_ + n_) - > type; - }; -}; - -template<> struct distance_impl -{ - template< typename Iter1, typename Iter2 > struct apply - { - enum { pos1_ = Iter1::pos_, pos2_ = Iter2::pos_ }; - typedef long_<( pos2_ - pos1_ )> type; - BOOST_STATIC_CONSTANT(long, value = ( pos2_ - pos1_ )); - }; -}; - -#endif }}