summaryrefslogtreecommitdiff
path: root/boost/parameter/aux_/arg_list.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/parameter/aux_/arg_list.hpp')
-rw-r--r--boost/parameter/aux_/arg_list.hpp31
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