diff --git a/include/boost/mpl/apply_wrap.hpp b/include/boost/mpl/apply_wrap.hpp index ae2c55f..fa9913e 100644 --- a/include/boost/mpl/apply_wrap.hpp +++ b/include/boost/mpl/apply_wrap.hpp @@ -22,7 +22,6 @@ # include # include # include -# include #endif #include diff --git a/include/boost/mpl/aux_/config/arrays.hpp b/include/boost/mpl/aux_/config/arrays.hpp index a9ea68a..b6a3306 100644 --- a/include/boost/mpl/aux_/config/arrays.hpp +++ b/include/boost/mpl/aux_/config/arrays.hpp @@ -19,9 +19,7 @@ #if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ - || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - ) + && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES diff --git a/include/boost/mpl/aux_/config/bind.hpp b/include/boost/mpl/aux_/config/bind.hpp index 10bcb94..01150a3 100644 --- a/include/boost/mpl/aux_/config/bind.hpp +++ b/include/boost/mpl/aux_/config/bind.hpp @@ -20,9 +20,7 @@ #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ - ) + && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) # define BOOST_MPL_CFG_NO_BIND_TEMPLATE diff --git a/include/boost/mpl/aux_/config/has_apply.hpp b/include/boost/mpl/aux_/config/has_apply.hpp index 4dc01c6..182572b 100644 --- a/include/boost/mpl/aux_/config/has_apply.hpp +++ b/include/boost/mpl/aux_/config/has_apply.hpp @@ -21,7 +21,6 @@ #if !defined(BOOST_MPL_CFG_NO_HAS_APPLY) \ && ( defined(BOOST_MPL_CFG_NO_HAS_XXX) \ || BOOST_WORKAROUND(__EDG_VERSION__, < 300) \ - || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \ ) diff --git a/include/boost/mpl/aux_/config/integral.hpp b/include/boost/mpl/aux_/config/integral.hpp index 144542d..4b2595f 100644 --- a/include/boost/mpl/aux_/config/integral.hpp +++ b/include/boost/mpl/aux_/config/integral.hpp @@ -27,9 +27,7 @@ #if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) \ && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \ - ) + && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) # define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC diff --git a/include/boost/mpl/aux_/config/msvc_typename.hpp b/include/boost/mpl/aux_/config/msvc_typename.hpp index feedc16..9365e02 100644 --- a/include/boost/mpl/aux_/config/msvc_typename.hpp +++ b/include/boost/mpl/aux_/config/msvc_typename.hpp @@ -14,13 +14,7 @@ // $Date$ // $Revision$ -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# define BOOST_MSVC_TYPENAME -#else -# define BOOST_MSVC_TYPENAME typename -#endif +// Obsolete. Remove. +#define BOOST_MSVC_TYPENAME typename #endif // BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/config/nttp.hpp b/include/boost/mpl/aux_/config/nttp.hpp deleted file mode 100644 index 11125a9..0000000 --- a/include/boost/mpl/aux_/config/nttp.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED -#define BOOST_MPL_AUX_CONFIG_NTTP_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 - -// MSVC 6.5 ICE-s on the code as simple as this (see "aux_/nttp_decl.hpp" -// for a workaround): -// -// namespace std { -// template< typename Char > struct string; -// } -// -// void foo(std::string); -// -// namespace boost { namespace mpl { -// template< int > struct arg; -// }} - -#if !defined(BOOST_MPL_CFG_NTTP_BUG) \ - && !defined(BOOST_MPL_PREPROCESSING_MODE) \ - && BOOST_WORKAROUND(BOOST_MSVC, < 1300) - -# define BOOST_MPL_CFG_NTTP_BUG - -#endif - -#endif // BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/config/operators.hpp b/include/boost/mpl/aux_/config/operators.hpp index 4663b2e..704cade 100644 --- a/include/boost/mpl/aux_/config/operators.hpp +++ b/include/boost/mpl/aux_/config/operators.hpp @@ -19,8 +19,7 @@ #include #if !defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) \ - && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ + && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \ || BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \ || BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ diff --git a/include/boost/mpl/aux_/config/pp_counter.hpp b/include/boost/mpl/aux_/config/pp_counter.hpp index e7fb8d6..fc733c4 100644 --- a/include/boost/mpl/aux_/config/pp_counter.hpp +++ b/include/boost/mpl/aux_/config/pp_counter.hpp @@ -16,7 +16,7 @@ #if !defined(BOOST_MPL_AUX_PP_COUNTER) # include -# if BOOST_WORKAROUND(BOOST_MSVC, >= 1300) +# ifdef BOOST_MSVC # define BOOST_MPL_AUX_PP_COUNTER() __COUNTER__ # else # define BOOST_MPL_AUX_PP_COUNTER() __LINE__ diff --git a/include/boost/mpl/aux_/has_rebind.hpp b/include/boost/mpl/aux_/has_rebind.hpp index eb4eda6..af4a379 100644 --- a/include/boost/mpl/aux_/has_rebind.hpp +++ b/include/boost/mpl/aux_/has_rebind.hpp @@ -20,11 +20,6 @@ #if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION) # include -#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300) -# include -# include -# include -# include #elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) # include # include @@ -43,20 +38,6 @@ namespace boost { namespace mpl { namespace aux { BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false) -#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300) - -BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false) - -template< typename T > -struct has_rebind - : if_< - msvc_is_class - , has_rebind_impl - , bool_ - >::type -{ -}; - #else // the rest template< typename T > struct has_rebind_tag {}; diff --git a/include/boost/mpl/aux_/lambda_support.hpp b/include/boost/mpl/aux_/lambda_support.hpp index 5b2af58..4b7cbce 100644 --- a/include/boost/mpl/aux_/lambda_support.hpp +++ b/include/boost/mpl/aux_/lambda_support.hpp @@ -122,7 +122,7 @@ template< BOOST_MPL_PP_PARAMS(i,typename T) > \ , name< BOOST_MPL_PP_ENUM(i,::boost::mpl::na) >* \ ); \ /**/ -#elif !BOOST_WORKAROUND(BOOST_MSVC, < 1300) +#else # define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \ template< BOOST_MPL_PP_PARAMS(i,typename T) > \ ::boost::mpl::aux::yes_tag operator|( \ @@ -130,8 +130,6 @@ template< BOOST_MPL_PP_PARAMS(i,typename T) > \ , ::boost::mpl::aux::has_rebind_tag< name >* \ ); \ /**/ -#else -# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/ #endif # if !defined(__BORLANDC__) diff --git a/include/boost/mpl/aux_/logical_op.hpp b/include/boost/mpl/aux_/logical_op.hpp index 0ba2510..11d8414 100644 --- a/include/boost/mpl/aux_/logical_op.hpp +++ b/include/boost/mpl/aux_/logical_op.hpp @@ -103,14 +103,6 @@ template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) > { }; - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1300) - template<> struct result_ - : BOOST_PP_CAT(AUX778076_OP_VALUE2,_) - { - }; -}; -#else }; template<> @@ -119,7 +111,6 @@ struct BOOST_PP_CAT(AUX778076_OP_NAME,impl) : BOOST_PP_CAT(AUX778076_OP_VALUE2,_) { }; -#endif // BOOST_MSVC == 1300 #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION diff --git a/include/boost/mpl/aux_/msvc_dtw.hpp b/include/boost/mpl/aux_/msvc_dtw.hpp deleted file mode 100644 index d595b23..0000000 --- a/include/boost/mpl/aux_/msvc_dtw.hpp +++ /dev/null @@ -1,68 +0,0 @@ - -// Copyright Aleksey Gurtovoy 2000-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$ - -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION! - -#include - -// local macros, #undef-ined at the end of the header -#define AUX778076_DTW_PARAMS(param) \ - BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \ -/**/ - -#define AUX778076_DTW_ORIGINAL_NAME \ - AUX778076_MSVC_DTW_ORIGINAL_NAME \ -/**/ - -// warning: not a well-formed C++ -// workaround for MSVC 6.5's "dependent template typedef bug" - -template< typename F> -struct AUX778076_MSVC_DTW_NAME -{ - template< bool > struct f_ : F {}; - template<> struct f_ - { -#if AUX778076_MSVC_DTW_ARITY > 0 - template< AUX778076_DTW_PARAMS(typename P) > struct AUX778076_DTW_ORIGINAL_NAME - { - typedef int type; - }; - }; - - template< AUX778076_DTW_PARAMS(typename T) > struct result_ - : f_< aux::msvc_never_true::value > - ::template AUX778076_DTW_ORIGINAL_NAME< AUX778076_DTW_PARAMS(T) > - { - }; -#else - template< typename P = int > struct AUX778076_DTW_ORIGINAL_NAME - { - typedef int type; - }; - }; - - template< typename T = int > struct result_ - : f_< aux::msvc_never_true::value > - ::template AUX778076_DTW_ORIGINAL_NAME<> - { - }; -#endif -}; - -#undef AUX778076_DTW_ORIGINAL_NAME -#undef AUX778076_DTW_PARAMS - -#undef AUX778076_MSVC_DTW_NAME -#undef AUX778076_MSVC_DTW_ORIGINAL_NAME -#undef AUX778076_MSVC_DTW_ARITY diff --git a/include/boost/mpl/aux_/msvc_never_true.hpp b/include/boost/mpl/aux_/msvc_never_true.hpp deleted file mode 100644 index 2df9b81..0000000 --- a/include/boost/mpl/aux_/msvc_never_true.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED -#define BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED - -// Copyright Aleksey Gurtovoy 2000-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 - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - -namespace boost { namespace mpl { namespace aux { - -template< typename T > -struct msvc_never_true -{ - enum { value = false }; -}; - -}}} - -#endif // BOOST_MSVC - -#endif // BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/na.hpp b/include/boost/mpl/aux_/na.hpp index f079c1e..d96eb6f 100644 --- a/include/boost/mpl/aux_/na.hpp +++ b/include/boost/mpl/aux_/na.hpp @@ -25,36 +25,24 @@ template< typename T > struct is_na : false_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using false_::value; -#endif }; template<> struct is_na : true_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using true_::value; -#endif }; template< typename T > struct is_not_na : true_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using true_::value; -#endif }; template<> struct is_not_na : false_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using false_::value; -#endif }; #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) diff --git a/include/boost/mpl/aux_/nttp_decl.hpp b/include/boost/mpl/aux_/nttp_decl.hpp index 8c344d8..600901c 100644 --- a/include/boost/mpl/aux_/nttp_decl.hpp +++ b/include/boost/mpl/aux_/nttp_decl.hpp @@ -16,20 +16,7 @@ #include -#if defined(BOOST_MPL_CFG_NTTP_BUG) - -typedef bool _mpl_nttp_bool; -typedef int _mpl_nttp_int; -typedef unsigned _mpl_nttp_unsigned; -typedef long _mpl_nttp_long; - -# include -# define BOOST_MPL_AUX_NTTP_DECL(T, x) BOOST_PP_CAT(_mpl_nttp_,T) x /**/ - -#else - +// Obsolete. Remove. # define BOOST_MPL_AUX_NTTP_DECL(T, x) T x /**/ -#endif - #endif // BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED diff --git a/include/boost/mpl/aux_/pop_front_impl.hpp b/include/boost/mpl/aux_/pop_front_impl.hpp index 7697b1f..94e2e01 100644 --- a/include/boost/mpl/aux_/pop_front_impl.hpp +++ b/include/boost/mpl/aux_/pop_front_impl.hpp @@ -26,15 +26,7 @@ namespace boost { namespace mpl { template< typename Tag > struct pop_front_impl { - template< typename Sequence > struct apply - // conservatively placed, but maybe should go outside surrounding - // braces. -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - { - typedef int type; - } -#endif - ; + template< typename Sequence > struct apply; }; BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, pop_front_impl) diff --git a/include/boost/mpl/aux_/range_c/iterator.hpp b/include/boost/mpl/aux_/range_c/iterator.hpp index 2c52905..4a020d0 100644 --- a/include/boost/mpl/aux_/range_c/iterator.hpp +++ b/include/boost/mpl/aux_/range_c/iterator.hpp @@ -65,12 +65,7 @@ template<> struct advance_impl template< typename Iter, typename Dist > struct apply { typedef typename deref::type n_; -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef typename plus_impl - ::template apply::type m_; -#else typedef typename plus::type m_; -#endif // agurt, 10/nov/04: to be generic, the code have to do something along // the lines below... // diff --git a/include/boost/mpl/aux_/yes_no.hpp b/include/boost/mpl/aux_/yes_no.hpp index 21a18a2..154363f 100644 --- a/include/boost/mpl/aux_/yes_no.hpp +++ b/include/boost/mpl/aux_/yes_no.hpp @@ -38,12 +38,7 @@ template<> struct yes_no_tag template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag { -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) typedef char (&type)[n]; -#else - char buf[n]; - typedef weighted_tag type; -#endif }; #if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) diff --git a/include/boost/mpl/empty_base.hpp b/include/boost/mpl/empty_base.hpp index a5841cf..c3efad8 100644 --- a/include/boost/mpl/empty_base.hpp +++ b/include/boost/mpl/empty_base.hpp @@ -34,18 +34,12 @@ template< typename T > struct is_empty_base : false_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using false_::value; -#endif }; template<> struct is_empty_base : true_ { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - using true_::value; -#endif }; }} diff --git a/include/boost/mpl/erase.hpp b/include/boost/mpl/erase.hpp index abcfdbd..3bb7b93 100644 --- a/include/boost/mpl/erase.hpp +++ b/include/boost/mpl/erase.hpp @@ -19,7 +19,6 @@ #include #include #include -#include namespace boost { namespace mpl { diff --git a/include/boost/mpl/erase_key.hpp b/include/boost/mpl/erase_key.hpp index 0e7b820..ae0d23d 100644 --- a/include/boost/mpl/erase_key.hpp +++ b/include/boost/mpl/erase_key.hpp @@ -19,7 +19,6 @@ #include #include #include -#include namespace boost { namespace mpl { diff --git a/include/boost/mpl/eval_if.hpp b/include/boost/mpl/eval_if.hpp index e892703..0ad8729 100644 --- a/include/boost/mpl/eval_if.hpp +++ b/include/boost/mpl/eval_if.hpp @@ -29,10 +29,8 @@ template< , 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)) \ - ) +#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ + && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) { typedef typename if_::type f_; typedef typename f_::type type; @@ -51,10 +49,8 @@ template< , 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_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \ + && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) { typedef typename if_c::type f_; typedef typename f_::type type; diff --git a/include/boost/mpl/has_xxx.hpp b/include/boost/mpl/has_xxx.hpp index c9f60ca..dfd8d47 100644 --- a/include/boost/mpl/has_xxx.hpp +++ b/include/boost/mpl/has_xxx.hpp @@ -39,129 +39,16 @@ #if !defined(BOOST_MPL_CFG_NO_HAS_XXX) -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - -// agurt, 11/sep/02: MSVC-specific version (< 7.1), based on a USENET -// newsgroup's posting by John Madsen (comp.lang.c++.moderated, -// 1999-11-12 19:17:06 GMT); the code is _not_ standard-conforming, but -// it works way more reliably than the SFINAE-based implementation - -// Modified dwa 8/Oct/02 to handle reference types. - -# include -# include - -namespace boost { namespace mpl { namespace aux { - -struct has_xxx_tag; - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1300) -template< typename U > struct msvc_incomplete_array -{ - typedef char (&type)[sizeof(U) + 1]; -}; -#endif - -template< typename T > -struct msvc_is_incomplete -{ - // MSVC is capable of some kinds of SFINAE. If U is an incomplete - // type, it won't pick the second overload - static char tester(...); - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1300) - template< typename U > - static typename msvc_incomplete_array::type tester(type_wrapper); -#else - template< typename U > - static char (& tester(type_wrapper) )[sizeof(U)+1]; -#endif - - BOOST_STATIC_CONSTANT(bool, value = - sizeof(tester(type_wrapper())) == 1 - ); -}; - -template<> -struct msvc_is_incomplete -{ - BOOST_STATIC_CONSTANT(bool, value = false); -}; - -}}} - -# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, default_) \ -template< typename T, typename name = ::boost::mpl::aux::has_xxx_tag > \ -struct BOOST_PP_CAT(trait,_impl) : T \ -{ \ - static boost::mpl::aux::no_tag \ - test(void(*)(::boost::mpl::aux::has_xxx_tag)); \ - \ - static boost::mpl::aux::yes_tag test(...); \ - \ - BOOST_STATIC_CONSTANT(bool, value = \ - sizeof(test(static_cast(0))) \ - != sizeof(boost::mpl::aux::no_tag) \ - ); \ - typedef boost::mpl::bool_ type; \ -}; \ -\ -template< typename T, typename fallback_ = boost::mpl::bool_ > \ -struct trait \ - : boost::mpl::if_c< \ - boost::mpl::aux::msvc_is_incomplete::value \ - , boost::mpl::bool_ \ - , BOOST_PP_CAT(trait,_impl) \ - >::type \ -{ \ -}; \ -\ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, void) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, bool) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, char) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed char) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned char) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed short) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned short) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed int) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned int) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed long) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned long) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, float) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, double) \ -BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, long double) \ -/**/ - -# define BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, T) \ -template<> struct trait \ -{ \ - BOOST_STATIC_CONSTANT(bool, value = false); \ - typedef boost::mpl::bool_ type; \ -}; \ -/**/ - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) -# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \ - BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \ - BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, wchar_t) \ -/**/ -#else -# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \ - BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \ -/**/ -#endif - - -// SFINAE-based implementations below are derived from a USENET newsgroup's +// SFINAE-based implementations below are derived from a USENET newsgroup's // posting by Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST) -# elif BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ +# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ || BOOST_WORKAROUND(__IBMCPP__, <= 700) // MSVC 7.1+ & VACPP // agurt, 15/jun/05: replace overload-based SFINAE implementation with SFINAE -// applied to partial specialization to fix some apparently random failures +// applied to partial specialization to fix some apparently random failures // (thanks to Daniel Wallin for researching this!) # define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \ @@ -256,7 +143,7 @@ struct trait \ }; \ /**/ -# endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +# endif // BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) #else // BOOST_MPL_CFG_NO_HAS_XXX diff --git a/include/boost/mpl/is_sequence.hpp b/include/boost/mpl/is_sequence.hpp index 4184108..d757526 100644 --- a/include/boost/mpl/is_sequence.hpp +++ b/include/boost/mpl/is_sequence.hpp @@ -28,53 +28,12 @@ #include #include #include -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -# include -#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300) -# include -#endif #include namespace boost { namespace mpl { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - -namespace aux { - -// agurt, 11/jun/03: -// MSVC 6.5/7.0 fails if 'has_begin' is instantiated on a class type that has a -// 'begin' member that doesn't name a type; e.g. 'has_begin< std::vector >' -// would fail; requiring 'T' to have _both_ 'tag' and 'begin' members workarounds -// the issue for most real-world cases -template< typename T > struct is_sequence_impl - : and_< - identity< aux::has_tag > - , identity< aux::has_begin > - > -{ -}; - -} // namespace aux - -template< - typename BOOST_MPL_AUX_NA_PARAM(T) - > -struct is_sequence - : if_< -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - aux::msvc_is_class -#else - boost::is_class -#endif - , aux::is_sequence_impl - , bool_ - >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T)) -}; - -#elif defined(BOOST_MPL_CFG_NO_HAS_XXX) +#if defined(BOOST_MPL_CFG_NO_HAS_XXX) template< typename BOOST_MPL_AUX_NA_PARAM(T) @@ -95,7 +54,7 @@ struct is_sequence BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T)) }; -#endif // BOOST_MSVC +#endif // BOOST_MPL_CFG_NO_HAS_XXX BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, is_sequence) diff --git a/include/boost/mpl/list/aux_/item.hpp b/include/boost/mpl/list/aux_/item.hpp index 8505deb..4be9e53 100644 --- a/include/boost/mpl/list/aux_/item.hpp +++ b/include/boost/mpl/list/aux_/item.hpp @@ -28,10 +28,6 @@ template< > struct l_item { -// agurt, 17/jul/03: to facilitate the deficient 'is_sequence' implementation -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef int begin; -#endif typedef aux::list_tag tag; typedef l_item type; @@ -42,9 +38,6 @@ struct l_item struct l_end { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef int begin; -#endif typedef aux::list_tag tag; typedef l_end type; typedef long_<0> size; diff --git a/include/boost/mpl/math/is_even.hpp b/include/boost/mpl/math/is_even.hpp index a39de5b..77cea96 100644 --- a/include/boost/mpl/math/is_even.hpp +++ b/include/boost/mpl/math/is_even.hpp @@ -22,27 +22,11 @@ namespace boost { namespace mpl { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -namespace aux -{ - template - struct is_even_base - { - enum { value = (N::value % 2) == 0 }; - typedef bool_ type; - }; -} -#endif - template< typename BOOST_MPL_AUX_NA_PARAM(N) > struct is_even -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - : aux::is_even_base::type -#else : bool_<((N::value % 2) == 0)> -#endif { BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_even,(N)) }; diff --git a/include/boost/mpl/multiset/aux_/count_impl.hpp b/include/boost/mpl/multiset/aux_/count_impl.hpp index 6cd4a5b..1ec1d7b 100644 --- a/include/boost/mpl/multiset/aux_/count_impl.hpp +++ b/include/boost/mpl/multiset/aux_/count_impl.hpp @@ -23,47 +23,8 @@ #include #include -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# include -# include -#endif - namespace boost { namespace mpl { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - -namespace aux { -template< typename S, typename U > -struct multiset_count_impl - : int_< sizeof(S::key_count(BOOST_MPL_AUX_STATIC_CAST(U*,0))) - 1 > -{ -}; - -template< typename S, typename U > -struct multiset_count_ref_impl -{ - typedef U (* u_)(); - typedef int_< sizeof(S::ref_key_count(BOOST_MPL_AUX_STATIC_CAST(u_,0))) - 1 > type_; - BOOST_STATIC_CONSTANT(int, value = type_::value); - typedef type_ type; -}; -} - -template<> -struct count_impl< aux::multiset_tag > -{ - template< typename Set, typename Key > struct apply - : if_< - is_reference - , aux::multiset_count_ref_impl - , aux::multiset_count_impl - >::type - { - }; -}; - -#else - template<> struct count_impl< aux::multiset_tag > { @@ -75,8 +36,6 @@ struct count_impl< aux::multiset_tag > }; }; -#endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - }} #endif // BOOST_MPL_MULTISET_AUX_COUNT_IMPL_HPP_INCLUDED diff --git a/include/boost/mpl/multiset/aux_/item.hpp b/include/boost/mpl/multiset/aux_/item.hpp index eca21ad..5c55761 100644 --- a/include/boost/mpl/multiset/aux_/item.hpp +++ b/include/boost/mpl/multiset/aux_/item.hpp @@ -24,56 +24,8 @@ #include #include -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# include -# include -# include -#endif - - namespace boost { namespace mpl { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - -template< typename T, typename Base > -struct ms_item -{ - typedef aux::multiset_tag tag; - - template< typename U > struct prior_count - { - enum { msvc70_wknd_ = sizeof(Base::key_count(BOOST_MPL_AUX_STATIC_CAST(U*,0))) }; - typedef int_< msvc70_wknd_ > count_; - typedef typename eval_if< is_same, next, count_ >::type c_; -#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) - typedef typename aux::weighted_tag::type type; -#else - typedef char (&type)[BOOST_MPL_AUX_MSVC_VALUE_WKND(c_)::value]; -#endif - }; - - template< typename U > struct prior_ref_count - { - typedef U (* u_)(); - enum { msvc70_wknd_ = sizeof(Base::ref_key_count(BOOST_MPL_AUX_STATIC_CAST(u_,0))) }; - typedef int_< msvc70_wknd_ > count_; - typedef typename eval_if< is_same, next, count_ >::type c_; -#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) - typedef typename aux::weighted_tag::type type; -#else - typedef char (&type)[BOOST_MPL_AUX_MSVC_VALUE_WKND(c_)::value]; -#endif - }; - - template< typename U > - static typename prior_count::type key_count(U*); - - template< typename U > - static typename prior_ref_count::type ref_key_count(U (*)()); -}; - -#else // BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - namespace aux { template< typename U, typename Base > struct prior_key_count @@ -107,8 +59,6 @@ struct ms_item static typename aux::prior_key_count::type key_count(aux::type_wrapper*); }; -#endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - }} #endif // BOOST_MPL_MULTISET_AUX_ITEM_HPP_INCLUDED diff --git a/include/boost/mpl/numeric_cast.hpp b/include/boost/mpl/numeric_cast.hpp index 6541470..5dc1556 100644 --- a/include/boost/mpl/numeric_cast.hpp +++ b/include/boost/mpl/numeric_cast.hpp @@ -17,11 +17,11 @@ #include #include -// agurt 21/sep/04: portability macro for the sake of MSVC 6.x-7.0; +// agurt 21/sep/04: portability macro for the sake of Borland; // resolves conflicts with 'boost::numeric_cast' function template. // use it in your own code _only_ if you care about compatibility with // these outdated compilers! -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) ) # define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_ #else # define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast