Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Copyright David Abrahams 2005.
0002 // Distributed under the Boost Software License, Version 1.0.
0003 // (See accompanying file LICENSE_1_0.txt or copy at
0004 // http://www.boost.org/LICENSE_1_0.txt)
0005 
0006 #ifndef BOOST_PARAMETER_MATCH_DWA2005714_HPP
0007 #define BOOST_PARAMETER_MATCH_DWA2005714_HPP
0008 
0009 #include <boost/parameter/config.hpp>
0010 
0011 #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
0012 #include <boost/parameter/aux_/void.hpp>
0013 #include <boost/preprocessor/arithmetic/sub.hpp>
0014 #include <boost/preprocessor/facilities/intercept.hpp>
0015 #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
0016 #include <boost/preprocessor/seq/size.hpp>
0017 
0018 #define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)                             \
0019     BOOST_PP_ENUM_TRAILING_PARAMS(                                           \
0020         BOOST_PP_SUB(                                                        \
0021             BOOST_PARAMETER_MAX_ARITY                                        \
0022           , BOOST_PP_SEQ_SIZE(ArgTypes)                                      \
0023         )                                                                    \
0024       , ::boost::parameter::void_ BOOST_PP_INTERCEPT                         \
0025     )
0026 /**/
0027 #else
0028 #define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)
0029 #endif
0030 
0031 #include <boost/parameter/aux_/preprocessor/seq_enum.hpp>
0032 
0033 //
0034 // Generates, e.g.
0035 //
0036 //    typename dfs_params::match<A1,A2>::type name = dfs_params()
0037 //
0038 // with workarounds for Borland compatibility.
0039 //
0040 #define BOOST_PARAMETER_MATCH(ParameterSpec, ArgTypes, name)                 \
0041     typename ParameterSpec::match<                                           \
0042         BOOST_PARAMETER_SEQ_ENUM(ArgTypes)                                   \
0043         BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)                             \
0044     >::type name = ParameterSpec()
0045 /**/
0046 
0047 #endif  // include guard
0048