From fd530b87f609b5e6b2725ddda27c3655874830aa Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 8 Oct 2011 17:39:54 +0000 Subject: [PATCH] Unordered: Remove use of BOOST_PP_ENUM_SHIFTED. Doesn't seem to work on Intel's preprocessor. [SVN r74813] --- include/boost/unordered/detail/emplace_args.hpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/include/boost/unordered/detail/emplace_args.hpp b/include/boost/unordered/detail/emplace_args.hpp index f396066e..cb56eac2 100644 --- a/include/boost/unordered/detail/emplace_args.hpp +++ b/include/boost/unordered/detail/emplace_args.hpp @@ -14,8 +14,9 @@ #include #include +#include +#include #include -#include #include #include #include @@ -382,22 +383,26 @@ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(10, std::tr1) BOOST_PP_ENUM_PARAMS_Z(z, num_params, typename A) \ > \ inline void construct_impl(std::pair* address, \ - boost::unordered::detail::BOOST_PP_CAT(emplace_args,num_params) < \ - BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) \ - > const& args) \ + boost::unordered::detail::BOOST_PP_CAT(emplace_args, num_params) < \ + BOOST_PP_ENUM_PARAMS_Z(z, num_params, A) \ + > const& args) \ { \ new((void*) boost::addressof(address->first)) A( \ boost::forward(args.a0)); \ new((void*) boost::addressof(address->second)) B( \ - BOOST_PP_ENUM_SHIFTED_##z(num_params, \ - BOOST_UNORDERED_CALL_FORWARD, args.a)); \ + BOOST_PP_ENUM_##z(BOOST_PP_DEC(num_params), \ + BOOST_UNORDERED_CALL_FORWARD2, args.a)); \ } +#define BOOST_UNORDERED_CALL_FORWARD2(z, i, a) \ + BOOST_UNORDERED_CALL_FORWARD(z, BOOST_PP_INC(i), a) + BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL(1, 2, _) BOOST_PP_REPEAT_FROM_TO(4, BOOST_UNORDERED_EMPLACE_LIMIT, BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL, _) #undef BOOST_UNORDERED_CONSTRUCT_PAIR_IMPL +#undef BOOST_UNORDERED_CALL_FORWARD2 #endif // BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT #endif // BOOST_UNORDERED_STD_FORWARD_MOVE