diff options
Diffstat (limited to 'boost/parameter/aux_/arg_list.hpp')
-rw-r--r-- | boost/parameter/aux_/arg_list.hpp | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/boost/parameter/aux_/arg_list.hpp b/boost/parameter/aux_/arg_list.hpp index ed3929d5bf..71e4da271e 100644 --- a/boost/parameter/aux_/arg_list.hpp +++ b/boost/parameter/aux_/arg_list.hpp @@ -78,15 +78,11 @@ struct empty_arg_list }; }; -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // Terminator for has_key, indicating that the keyword is unique template <class KW> static no_tag has_key(KW*); -#endif -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || (BOOST_WORKAROUND(__GNUC__, < 3)) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // The overload set technique doesn't work with these older // compilers, so they need some explicit handholding. @@ -150,11 +146,6 @@ struct empty_arg_list typedef arg_list_tag tag; // For dispatching to sequence intrinsics }; -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -template<class KW> -no_tag operator*(empty_arg_list, KW*); -#endif - // Forward declaration for arg_list::operator, template <class KW, class T> struct tagged_argument; @@ -227,25 +218,17 @@ struct arg_list : Next }; }; -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && !BOOST_WORKAROUND(__GNUC__, == 2) -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - friend yes_tag operator*(arg_list, key_type*); -# define BOOST_PARAMETER_CALL_HAS_KEY(next, key) (*(next*)0 * (key*)0) -# else +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // Overload for key_type, so the assert below will fire if the // same keyword is used again static yes_tag has_key(key_type*); using Next::has_key; -# define BOOST_PARAMETER_CALL_HAS_KEY(next, key) next::has_key((key*)0) -# endif - BOOST_MPL_ASSERT_MSG( - sizeof(BOOST_PARAMETER_CALL_HAS_KEY(Next,key_type)) == sizeof(no_tag) + sizeof(Next::has_key((key_type*)0)) == sizeof(no_tag) , duplicate_keyword, (key_type) ); -# undef BOOST_PARAMETER_CALL_HAS_KEY #endif // // Begin implementation of indexing operators for looking up @@ -266,9 +249,7 @@ struct arg_list : Next return arg.value ? arg.value.get() : arg.value.construct(d.value); } -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__GNUC__, < 3) \ - || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // These older compilers don't support the overload set creation // idiom well, so we need to do all the return type calculation // for the compiler and dispatch through an outer function template @@ -407,10 +388,6 @@ struct arg_list : Next typedef arg_list_tag tag; // For dispatching to sequence intrinsics }; -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) // ETI workaround -template <> struct arg_list<int,int> {}; -#endif - // MPL sequence support template <class ArgumentPack> struct arg_list_iterator |