File indexing completed on 2025-01-18 09:43:27
0001
0002
0003
0004
0005
0006
0007 #ifndef BOOST_PARAMETER_AUX_PP_IMPL_ARGUMENT_PACK_HPP
0008 #define BOOST_PARAMETER_AUX_PP_IMPL_ARGUMENT_PACK_HPP
0009
0010 #include <boost/parameter/aux_/pack/tag_keyword_arg.hpp>
0011 #include <boost/parameter/aux_/pack/make_arg_list.hpp>
0012 #include <boost/parameter/config.hpp>
0013
0014 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
0015 #include <boost/parameter/aux_/pack/make_parameter_spec_items.hpp>
0016
0017 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0018 #include <boost/mp11/integral.hpp>
0019 #include <boost/mp11/list.hpp>
0020 #else
0021 #include <boost/mpl/bool.hpp>
0022 #include <boost/mpl/pair.hpp>
0023 #endif
0024
0025 namespace boost { namespace parameter { namespace aux {
0026
0027 template <typename Parameters, typename ...Args>
0028 struct argument_pack
0029 {
0030 typedef typename ::boost::parameter::aux::make_arg_list<
0031 typename ::boost::parameter::aux::make_parameter_spec_items<
0032 typename Parameters::parameter_spec
0033 , Args...
0034 >::type
0035 , typename Parameters::deduced_list
0036 , ::boost::parameter::aux::tag_keyword_arg
0037 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0038 , ::boost::mp11::mp_false
0039 #else
0040 , ::boost::mpl::false_
0041 #endif
0042 >::type result;
0043 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0044 using type = ::boost::mp11::mp_at_c<result,0>;
0045 #else
0046 typedef typename ::boost::mpl::first<result>::type type;
0047 #endif
0048 };
0049 }}}
0050
0051 #else
0052 #include <boost/parameter/aux_/void.hpp>
0053 #include <boost/parameter/aux_/pack/make_items.hpp>
0054 #include <boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp>
0055 #include <boost/preprocessor/facilities/intercept.hpp>
0056 #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
0057 #include <boost/mpl/bool.hpp>
0058 #include <boost/mpl/pair.hpp>
0059
0060 namespace boost { namespace parameter { namespace aux {
0061
0062 template <
0063 typename Parameters
0064 BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(
0065 BOOST_PARAMETER_MAX_ARITY
0066 , typename A
0067 , = ::boost::parameter::void_ BOOST_PP_INTERCEPT
0068 )
0069 >
0070 struct argument_pack
0071 {
0072 typedef typename ::boost::parameter::aux::make_arg_list<
0073 typename BOOST_PARAMETER_build_arg_list(
0074 BOOST_PARAMETER_MAX_ARITY
0075 , ::boost::parameter::aux::make_items
0076 , typename Parameters::parameter_spec
0077 , A
0078 )::type
0079 , typename Parameters::deduced_list
0080 , ::boost::parameter::aux::tag_keyword_arg
0081 , ::boost::mpl::false_
0082 >::type result;
0083 typedef typename ::boost::mpl::first<result>::type type;
0084 };
0085 }}}
0086
0087 #include <boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp>
0088
0089 #endif
0090 #endif
0091