Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:43:27

0001 // Copyright Daniel Wallin 2006.
0002 // Copyright Cromwell D. Enage 2017.
0003 // Distributed under the Boost Software License, Version 1.0.
0004 // (See accompanying file LICENSE_1_0.txt or copy at
0005 // http://www.boost.org/LICENSE_1_0.txt)
0006 
0007 #ifndef BOOST_PARAMETER_AUX_PP_IMPL_MATCH_HPP
0008 #define BOOST_PARAMETER_AUX_PP_IMPL_MATCH_HPP
0009 
0010 #include <boost/parameter/config.hpp>
0011 
0012 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
0013 
0014 namespace boost { namespace parameter { namespace aux {
0015 
0016     // Recast the ParameterSpec's nested match metafunction
0017     // as a free metafunction.
0018     //
0019     // No more limits set by BOOST_PARAMETER_MAX_ARITY. -- Cromwell D. Enage
0020     template <typename Parameters, typename ...Args>
0021     struct match : Parameters::BOOST_NESTED_TEMPLATE match<Args...>
0022     {
0023     };
0024 }}} // namespace boost::parameter::aux
0025 
0026 #else
0027 
0028 #include <boost/parameter/aux_/void.hpp>
0029 #include <boost/preprocessor/facilities/intercept.hpp>
0030 #include <boost/preprocessor/repetition/enum_params.hpp>
0031 #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
0032 
0033 namespace boost { namespace parameter { namespace aux {
0034 
0035     // Recast the ParameterSpec's nested match metafunction
0036     // as a free metafunction.
0037     template <
0038         typename Parameters
0039         BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(
0040             BOOST_PARAMETER_MAX_ARITY
0041           , typename A
0042           , = ::boost::parameter::void_ BOOST_PP_INTERCEPT
0043         )
0044     >
0045     struct match
0046       : Parameters::BOOST_NESTED_TEMPLATE match<
0047             BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, A)
0048         >
0049     {
0050     };
0051 }}} // namespace boost::parameter::aux
0052 
0053 #endif  // BOOST_PARAMETER_HAS_PERFECT_FORWARDING
0054 #endif  // include guard
0055