diff --git a/include/boost/parameter/aux_/tagged_argument.hpp b/include/boost/parameter/aux_/tagged_argument.hpp index 5869e61..5687158 100755 --- a/include/boost/parameter/aux_/tagged_argument.hpp +++ b/include/boost/parameter/aux_/tagged_argument.hpp @@ -88,7 +88,7 @@ struct tagged_argument : tagged_argument_base } template - typename mpl::apply_wrap2::type + typename mpl::apply_wrap3::type operator[](default_ const& x) const { return get_with_default(x, 0L); @@ -108,9 +108,10 @@ struct tagged_argument : tagged_argument_base } template - typename mpl::apply_wrap2< + typename mpl::apply_wrap3< binding,KW , typename result_of0::type + , mpl::true_ >::type operator[](lazy_default const& x) const { diff --git a/include/boost/parameter/preprocessor.hpp b/include/boost/parameter/preprocessor.hpp index 6c813aa..9a81ede 100755 --- a/include/boost/parameter/preprocessor.hpp +++ b/include/boost/parameter/preprocessor.hpp @@ -518,7 +518,7 @@ struct funptr_predicate BOOST_PARAMETER_PREDICATE_TYPE(BOOST_PARAMETER_FN_ARG_PRED(elem)) \ >::type \ > -# else +# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300) # define BOOST_PARAMETER_FUNCTION_PARAMETERS_M(r,tag_namespace,i,elem) \ BOOST_PP_COMMA_IF(i) \ boost::parameter::BOOST_PP_CAT( \ @@ -533,6 +533,19 @@ struct funptr_predicate void* BOOST_PARAMETER_FN_ARG_PRED(elem) \ > \ > +# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# define BOOST_PARAMETER_FUNCTION_PARAMETERS_M(r,tag_namespace,i,elem) \ + BOOST_PP_COMMA_IF(i) \ + boost::parameter::BOOST_PP_CAT( \ + BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_ \ + , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \ + )( \ + tag_namespace::BOOST_PARAMETER_FUNCTION_KEYWORD( \ + BOOST_PARAMETER_FN_ARG_KEYWORD(elem) \ + ) \ + ) \ + , boost::mpl::always \ + > # endif # define BOOST_PARAMETER_FUNCTION_PARAMETERS(tag_namespace, base, args) \ diff --git a/test/basics.cpp b/test/basics.cpp index da8b7eb..98c333d 100755 --- a/test/basics.cpp +++ b/test/basics.cpp @@ -11,7 +11,6 @@ #include "basics.hpp" - namespace test { // A separate function for getting the "value" key, so we can deduce diff --git a/test/deduced.hpp b/test/deduced.hpp index 3e79996..8de47fa 100755 --- a/test/deduced.hpp +++ b/test/deduced.hpp @@ -27,13 +27,13 @@ struct assert_expected } template - bool check(K const& k, not_present_tag const&, long) const + bool check1(K const& k, not_present_tag const&, long) const { return check_not_present(args[k | not_present]); } template - bool check(K const& k, Expected const& expected, int) const + bool check1(K const& k, Expected const& expected, int) const { return test::equal(args[k], expected); } @@ -42,7 +42,7 @@ struct assert_expected void operator()(K) const { boost::parameter::keyword const& k = boost::parameter::keyword::get(); - assert(check(k, expected[k], 0L)); + assert(check1(k, expected[k], 0L)); } E const& expected; diff --git a/test/deduced_dependent_predicate.cpp b/test/deduced_dependent_predicate.cpp index ff54da7..6e45d3b 100755 --- a/test/deduced_dependent_predicate.cpp +++ b/test/deduced_dependent_predicate.cpp @@ -19,6 +19,7 @@ int main() { using namespace parameter; using boost::is_same; + using boost::remove_reference; using boost::add_reference; check< @@ -26,10 +27,17 @@ int main() tag::x , optional< deduced +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + , is_same< + mpl::_1 + , remove_reference > + > +#else , is_same< add_reference - , binding + , binding > +#endif > > >( @@ -43,10 +51,17 @@ int main() tag::x , optional< deduced +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + , is_same< + mpl::_1 + , remove_reference > + > +#else , is_same< add_reference - , binding + , binding > +#endif > > >(