diff --git a/include/boost/mpl/apply.hpp b/include/boost/mpl/apply.hpp index 0a2c95f..464268d 100644 --- a/include/boost/mpl/apply.hpp +++ b/include/boost/mpl/apply.hpp @@ -45,7 +45,6 @@ # include # include # include -# include # include # include @@ -165,14 +164,6 @@ struct BOOST_PP_CAT(apply,i_) }; -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) -/// workaround for ETI bug -template<> -struct BOOST_PP_CAT(apply,i_) -{ - typedef int type; -}; -#endif # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) diff --git a/include/boost/mpl/apply_wrap.hpp b/include/boost/mpl/apply_wrap.hpp index b807779..c77e84e 100644 --- a/include/boost/mpl/apply_wrap.hpp +++ b/include/boost/mpl/apply_wrap.hpp @@ -42,7 +42,6 @@ # include # include # include -# include # include # include @@ -161,14 +160,6 @@ struct BOOST_PP_CAT(apply_wrap,i_) # endif // workarounds -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) -/// workaround for ETI bug -template<> -struct BOOST_PP_CAT(apply_wrap,i_) -{ - typedef int type; -}; -#endif # undef i_ diff --git a/include/boost/mpl/aux_/advance_backward.hpp b/include/boost/mpl/aux_/advance_backward.hpp index df56793..2ee79b8 100644 --- a/include/boost/mpl/aux_/advance_backward.hpp +++ b/include/boost/mpl/aux_/advance_backward.hpp @@ -35,7 +35,6 @@ # include # include -# include # include # include @@ -101,13 +100,6 @@ struct advance_backward< BOOST_PP_FRAME_ITERATION(1) > typedef BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(1)) type; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct apply - { - typedef int type; - }; -#endif }; #undef i_ diff --git a/include/boost/mpl/aux_/advance_forward.hpp b/include/boost/mpl/aux_/advance_forward.hpp index 62b0101..350b589 100644 --- a/include/boost/mpl/aux_/advance_forward.hpp +++ b/include/boost/mpl/aux_/advance_forward.hpp @@ -35,7 +35,6 @@ # include # include -# include # include # include @@ -100,13 +99,6 @@ struct advance_forward< BOOST_PP_FRAME_ITERATION(1) > typedef BOOST_PP_CAT(iter,i_) type; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct apply - { - typedef int type; - }; -#endif }; #undef i_ diff --git a/include/boost/mpl/aux_/begin_end_impl.hpp b/include/boost/mpl/aux_/begin_end_impl.hpp index 58b70dd..d51124d 100644 --- a/include/boost/mpl/aux_/begin_end_impl.hpp +++ b/include/boost/mpl/aux_/begin_end_impl.hpp @@ -21,7 +21,6 @@ #include #include #include -#include namespace boost { namespace mpl { diff --git a/include/boost/mpl/aux_/clear_impl.hpp b/include/boost/mpl/aux_/clear_impl.hpp index 20b270c..c1ab712 100644 --- a/include/boost/mpl/aux_/clear_impl.hpp +++ b/include/boost/mpl/aux_/clear_impl.hpp @@ -16,7 +16,6 @@ #include #include -#include namespace boost { namespace mpl { diff --git a/include/boost/mpl/aux_/config/eti.hpp b/include/boost/mpl/aux_/config/eti.hpp deleted file mode 100644 index 519d433..0000000 --- a/include/boost/mpl/aux_/config/eti.hpp +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED -#define BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -// flags for MSVC 6.5's so-called "early template instantiation bug" -#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(BOOST_MSVC, < 1300) - -# define BOOST_MPL_CFG_MSVC_60_ETI_BUG - -#endif - -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(BOOST_MSVC, == 1300) - -# define BOOST_MPL_CFG_MSVC_70_ETI_BUG - -#endif - -#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \ - || defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \ - ) - -# define BOOST_MPL_CFG_MSVC_ETI_BUG - -#endif - -#endif // BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/fold_impl_body.hpp b/include/boost/mpl/aux_/fold_impl_body.hpp index 02dd645..0606c45 100644 --- a/include/boost/mpl/aux_/fold_impl_body.hpp +++ b/include/boost/mpl/aux_/fold_impl_body.hpp @@ -20,7 +20,6 @@ # include # include # include -# include # include # include @@ -248,14 +247,6 @@ struct AUX778076_FOLD_CHUNK_NAME<-1> typedef typename res_::iterator iterator; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif }; template< @@ -348,14 +339,6 @@ template<> struct AUX778076_FOLD_CHUNK_NAME typedef BOOST_PP_CAT(iter,n_) iterator; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif }; #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION diff --git a/include/boost/mpl/aux_/is_msvc_eti_arg.hpp b/include/boost/mpl/aux_/is_msvc_eti_arg.hpp deleted file mode 100644 index 4989940..0000000 --- a/include/boost/mpl/aux_/is_msvc_eti_arg.hpp +++ /dev/null @@ -1,64 +0,0 @@ - -#ifndef BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED -#define BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include -#include - -namespace boost { namespace mpl { namespace aux { - -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) - -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - -template< typename T > -struct is_msvc_eti_arg -{ - BOOST_STATIC_CONSTANT(bool, value = false); -}; - -#else // BOOST_MPL_CFG_MSVC_60_ETI_BUG - -struct eti_int_convertible -{ - eti_int_convertible(int); -}; - -template< typename T > -struct is_msvc_eti_arg -{ - static no_tag test(...); - static yes_tag test(eti_int_convertible); - static T& get(); - - BOOST_STATIC_CONSTANT(bool, value = - sizeof(test(get())) == sizeof(yes_tag) - ); -}; - -#endif - -template<> -struct is_msvc_eti_arg -{ - BOOST_STATIC_CONSTANT(bool, value = true); -}; - -#endif // BOOST_MPL_CFG_MSVC_ETI_BUG - -}}} - -#endif // BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/msvc_eti_base.hpp b/include/boost/mpl/aux_/msvc_eti_base.hpp index 0d8ace6..44b8022 100644 --- a/include/boost/mpl/aux_/msvc_eti_base.hpp +++ b/include/boost/mpl/aux_/msvc_eti_base.hpp @@ -14,44 +14,11 @@ // $Date$ // $Revision$ -#include -#include #include #include namespace boost { namespace mpl { namespace aux { -#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - -template< bool > struct msvc_eti_base_impl -{ - template< typename T > struct result_ - : T - { - typedef T type; - }; -}; - -template<> struct msvc_eti_base_impl -{ - template< typename T > struct result_ - { - typedef result_ type; - typedef result_ first; - typedef result_ second; - typedef result_ tag; - enum { value = 0 }; - }; -}; - -template< typename T > struct msvc_eti_base - : msvc_eti_base_impl< is_msvc_eti_arg::value > - ::template result_ -{ -}; - -#else // !BOOST_MPL_CFG_MSVC_70_ETI_BUG - template< typename T > struct msvc_eti_base : T { @@ -61,8 +28,6 @@ template< typename T > struct msvc_eti_base typedef T type; }; -#endif - template<> struct msvc_eti_base { typedef msvc_eti_base type; diff --git a/include/boost/mpl/aux_/msvc_type.hpp b/include/boost/mpl/aux_/msvc_type.hpp deleted file mode 100644 index bea244f..0000000 --- a/include/boost/mpl/aux_/msvc_type.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -#ifndef BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED -#define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2001-2004 -// -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/mpl for documentation. - -// $Id$ -// $Date$ -// $Revision$ - -#include -#include - -namespace boost { namespace mpl { namespace aux { - -#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) - -template< bool > struct msvc_type_impl -{ - template< typename T > struct result_ - { - typedef typename T::type type; - }; -}; - -template<> struct msvc_type_impl -{ - template< typename T > struct result_ - { - typedef result_ type; - }; -}; - -template< typename T > struct msvc_type - : msvc_type_impl< is_msvc_eti_arg::value > - ::template result_ -{ -}; - -#else // BOOST_MPL_CFG_MSVC_70_ETI_BUG - -template< typename T > struct msvc_type -{ - typedef typename T::type type; -}; - -template<> struct msvc_type -{ - typedef int type; -}; - -#endif - -}}} - -#endif // BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/na_spec.hpp b/include/boost/mpl/aux_/na_spec.hpp index d052fce..c3a16f2 100644 --- a/include/boost/mpl/aux_/na_spec.hpp +++ b/include/boost/mpl/aux_/na_spec.hpp @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -136,18 +135,8 @@ struct template_arity< \ # define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/ #endif -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) -# define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \ -template<> \ -struct name< BOOST_MPL_PP_ENUM(i, int) > \ -{ \ - typedef int type; \ - enum { value = 0 }; \ -}; \ -/**/ -#else +// Obsolete. Remove. # define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/ -#endif #define BOOST_MPL_AUX_NA_PARAM(param) param = na diff --git a/include/boost/mpl/aux_/numeric_op.hpp b/include/boost/mpl/aux_/numeric_op.hpp index b51f14b..c4d92e5 100644 --- a/include/boost/mpl/aux_/numeric_op.hpp +++ b/include/boost/mpl/aux_/numeric_op.hpp @@ -27,7 +27,6 @@ # include # include # include -# include # include #endif @@ -46,7 +45,6 @@ # include # include # include -# include # include # include @@ -229,21 +227,10 @@ struct AUX778076_OP_NAME #endif -#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) : AUX778076_OP_IMPL_NAME< typename AUX778076_OP_TAG_NAME::type , typename AUX778076_OP_TAG_NAME::type >::template apply::type -#else - : aux::msvc_eti_base< typename apply_wrap2< - AUX778076_OP_IMPL_NAME< - typename AUX778076_OP_TAG_NAME::type - , typename AUX778076_OP_TAG_NAME::type - > - , N1 - , N2 - >::type >::type -#endif { #if AUX778076_OP_ARITY != 2 diff --git a/include/boost/mpl/aux_/reverse_fold_impl_body.hpp b/include/boost/mpl/aux_/reverse_fold_impl_body.hpp index 0f80010..5911e3e 100644 --- a/include/boost/mpl/aux_/reverse_fold_impl_body.hpp +++ b/include/boost/mpl/aux_/reverse_fold_impl_body.hpp @@ -260,14 +260,6 @@ struct AUX778076_FOLD_CHUNK_NAME<-1> typedef typename res_::iterator iterator; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif }; template< @@ -395,14 +387,6 @@ template<> struct AUX778076_FOLD_CHUNK_NAME typedef BOOST_PP_CAT(iter,n_) iterator; }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) - /// ETI workaround - template<> struct result_ - { - typedef int state; - typedef int iterator; - }; -#endif }; #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION diff --git a/include/boost/mpl/aux_/template_arity.hpp b/include/boost/mpl/aux_/template_arity.hpp index f011159..3567ba9 100644 --- a/include/boost/mpl/aux_/template_arity.hpp +++ b/include/boost/mpl/aux_/template_arity.hpp @@ -129,7 +129,6 @@ struct template_arity # endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING # else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT -# include namespace boost { namespace mpl { namespace aux { @@ -158,13 +157,6 @@ struct template_arity { }; -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) -template<> -struct template_arity - : mpl::int_<-1> -{ -}; -#endif }}} diff --git a/include/boost/mpl/aux_/traits_lambda_spec.hpp b/include/boost/mpl/aux_/traits_lambda_spec.hpp index 4a7ff26..32302ff 100644 --- a/include/boost/mpl/aux_/traits_lambda_spec.hpp +++ b/include/boost/mpl/aux_/traits_lambda_spec.hpp @@ -23,17 +23,6 @@ # define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/ -#elif !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) - -# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \ -template<> struct trait \ -{ \ - template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \ - { \ - }; \ -}; \ -/**/ - #else # define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \ @@ -43,13 +32,6 @@ template<> struct trait \ { \ }; \ }; \ -template<> struct trait \ -{ \ - template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \ - { \ - typedef int type; \ - }; \ -}; \ /**/ #endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT diff --git a/include/boost/mpl/aux_/value_wknd.hpp b/include/boost/mpl/aux_/value_wknd.hpp index 23fefde..ad2e00a 100644 --- a/include/boost/mpl/aux_/value_wknd.hpp +++ b/include/boost/mpl/aux_/value_wknd.hpp @@ -16,11 +16,9 @@ #include #include -#include #include -#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \ - || defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) +#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) # include @@ -30,27 +28,13 @@ template< typename C_ > struct value_wknd { }; -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) -template<> struct value_wknd - : int_<1> -{ - using int_<1>::value; -}; -#endif }}} -#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) # define BOOST_MPL_AUX_VALUE_WKND(C) \ ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \ /**/ # define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) BOOST_MPL_AUX_VALUE_WKND(C) -#else -# define BOOST_MPL_AUX_VALUE_WKND(C) C -# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \ - ::boost::mpl::aux::value_wknd< C > \ -/**/ -#endif #else // BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS @@ -77,12 +61,6 @@ template< typename T > struct value_type_wknd typedef typename T::value_type type; }; -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG) -template<> struct value_type_wknd -{ - typedef int type; -}; -#endif }}} diff --git a/include/boost/mpl/count_if.hpp b/include/boost/mpl/count_if.hpp index d81c395..d02f0a5 100644 --- a/include/boost/mpl/count_if.hpp +++ b/include/boost/mpl/count_if.hpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -63,11 +62,11 @@ template< , typename BOOST_MPL_AUX_NA_PARAM(Predicate) > struct count_if - : aux::msvc_eti_base< typename fold< + : fold< Sequence , integral_c , protect< aux::next_if > - >::type > + >::type { BOOST_MPL_AUX_LAMBDA_SUPPORT(2,count_if,(Sequence,Predicate)) }; diff --git a/include/boost/mpl/deref.hpp b/include/boost/mpl/deref.hpp index 1105ec9..ffded65 100644 --- a/include/boost/mpl/deref.hpp +++ b/include/boost/mpl/deref.hpp @@ -14,10 +14,8 @@ // $Date$ // $Revision$ -#include #include #include -#include namespace boost { namespace mpl { @@ -26,11 +24,7 @@ template< > struct deref { -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) typedef typename Iterator::type type; -#else - typedef typename aux::msvc_type::type type; -#endif BOOST_MPL_AUX_LAMBDA_SUPPORT(1,deref,(Iterator)) }; diff --git a/include/boost/mpl/distance.hpp b/include/boost/mpl/distance.hpp index 95f4f33..479ca70 100644 --- a/include/boost/mpl/distance.hpp +++ b/include/boost/mpl/distance.hpp @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -35,11 +34,11 @@ template< typename Tag > struct distance_impl { template< typename First, typename Last > struct apply #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) - : aux::msvc_eti_base< typename iter_fold< + : iter_fold< iterator_range , mpl::long_<0> , next<> - >::type > + >::type { #else { diff --git a/include/boost/mpl/equal.hpp b/include/boost/mpl/equal.hpp index 8937ef3..9acc0f0 100644 --- a/include/boost/mpl/equal.hpp +++ b/include/boost/mpl/equal.hpp @@ -28,7 +28,6 @@ #include #include #include -#include #include @@ -98,9 +97,7 @@ template< , typename Predicate = is_same<_,_> > struct equal - : aux::msvc_eti_base< - typename aux::equal_impl::type - >::type + : aux::equal_impl::type { BOOST_MPL_AUX_LAMBDA_SUPPORT(2,equal,(Sequence1,Sequence2)) }; diff --git a/include/boost/mpl/is_sequence.hpp b/include/boost/mpl/is_sequence.hpp index 68e036f..4184108 100644 --- a/include/boost/mpl/is_sequence.hpp +++ b/include/boost/mpl/is_sequence.hpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) @@ -98,12 +97,6 @@ struct is_sequence #endif // BOOST_MSVC -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) -template<> struct is_sequence - : bool_ -{ -}; -#endif BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, is_sequence) diff --git a/include/boost/mpl/negate.hpp b/include/boost/mpl/negate.hpp index d6aa065..9e0848f 100644 --- a/include/boost/mpl/negate.hpp +++ b/include/boost/mpl/negate.hpp @@ -15,10 +15,8 @@ // $Revision$ #include -#include #include #include -#include #include #include @@ -35,16 +33,9 @@ template< typename BOOST_MPL_AUX_NA_PARAM(N) > struct negate -#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) : negate_impl< typename negate_tag::type >::template apply::type -#else - : aux::msvc_eti_base< typename apply_wrap1< - negate_impl< typename negate_tag::type > - , N - >::type >::type -#endif { BOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N)) }; diff --git a/include/boost/mpl/pair.hpp b/include/boost/mpl/pair.hpp index 67c01d7..914e69a 100644 --- a/include/boost/mpl/pair.hpp +++ b/include/boost/mpl/pair.hpp @@ -14,10 +14,8 @@ // $Date$ // $Revision$ -#include #include #include -#include namespace boost { namespace mpl { @@ -39,11 +37,7 @@ template< > struct first { -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) typedef typename P::first type; -#else - typedef typename aux::msvc_eti_base

::first type; -#endif BOOST_MPL_AUX_LAMBDA_SUPPORT(1,first,(P)) }; @@ -52,11 +46,7 @@ template< > struct second { -#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) typedef typename P::second type; -#else - typedef typename aux::msvc_eti_base

::second type; -#endif BOOST_MPL_AUX_LAMBDA_SUPPORT(1,second,(P)) }; diff --git a/include/boost/mpl/sequence_tag.hpp b/include/boost/mpl/sequence_tag.hpp index f87d92b..97efb48 100644 --- a/include/boost/mpl/sequence_tag.hpp +++ b/include/boost/mpl/sequence_tag.hpp @@ -18,8 +18,6 @@ #include #include #include -#include -#include #include #include @@ -27,8 +25,7 @@ namespace boost { namespace mpl { // agurt, 27/nov/02: have to use a simplistic 'sequence_tag' implementation // on MSVC to avoid dreadful "internal structure overflow" error -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ - || defined(BOOST_MPL_CFG_NO_HAS_XXX) +#if defined(BOOST_MPL_CFG_NO_HAS_XXX) template< typename BOOST_MPL_AUX_NA_PARAM(Sequence) @@ -38,41 +35,6 @@ struct sequence_tag typedef typename Sequence::tag type; }; -#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300) - -// agurt, 07/feb/03: workaround for what seems to be MSVC 7.0-specific ETI issue - -namespace aux { - -template< bool > -struct sequence_tag_impl -{ - template< typename Sequence > struct result_ - { - typedef typename Sequence::tag type; - }; -}; - -template<> -struct sequence_tag_impl -{ - template< typename Sequence > struct result_ - { - typedef int type; - }; -}; - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(Sequence) - > -struct sequence_tag - : aux::sequence_tag_impl< !aux::is_msvc_eti_arg::value > - ::template result_ -{ -}; - #else namespace aux { diff --git a/include/boost/mpl/size.hpp b/include/boost/mpl/size.hpp index 12ffefb..4dcf6df 100644 --- a/include/boost/mpl/size.hpp +++ b/include/boost/mpl/size.hpp @@ -19,7 +19,6 @@ #include #include #include -#include namespace boost { namespace mpl { @@ -27,10 +26,8 @@ template< typename BOOST_MPL_AUX_NA_PARAM(Sequence) > struct size - : aux::msvc_eti_base< - typename size_impl< typename sequence_tag::type > - ::template apply< Sequence >::type - >::type + : size_impl< typename sequence_tag::type > + ::template apply< Sequence >::type { BOOST_MPL_AUX_LAMBDA_SUPPORT(1, size, (Sequence)) }; diff --git a/include/boost/mpl/tag.hpp b/include/boost/mpl/tag.hpp index 8586277..7507b74 100644 --- a/include/boost/mpl/tag.hpp +++ b/include/boost/mpl/tag.hpp @@ -17,7 +17,6 @@ #include #include #include -#include namespace boost { namespace mpl { @@ -29,22 +28,12 @@ template< typename T > struct tag_impl } template< typename T, typename Default = void_ > struct tag -#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) : if_< aux::has_tag , aux::tag_impl , Default >::type { -#else -{ - typedef typename eval_if< - aux::has_tag - , aux::tag_impl - , Default - >::type type; - -#endif }; }}