File indexing completed on 2025-01-18 09:43:29
0001
0002
0003
0004
0005
0006 #ifndef BOOST_PARAMETER_AUX_NAME_HPP
0007 #define BOOST_PARAMETER_AUX_NAME_HPP
0008
0009 namespace boost { namespace parameter { namespace aux {
0010
0011 struct name_tag_base
0012 {
0013 };
0014
0015 template <typename Tag>
0016 struct name_tag
0017 {
0018 };
0019 }}}
0020
0021 #include <boost/mpl/bool.hpp>
0022
0023 namespace boost { namespace parameter { namespace aux {
0024
0025 template <typename T>
0026 struct is_name_tag : ::boost::mpl::false_
0027 {
0028 };
0029 }}}
0030
0031 #include <boost/parameter/value_type.hpp>
0032 #include <boost/mpl/placeholders.hpp>
0033 #include <boost/config.hpp>
0034 #include <boost/config/workaround.hpp>
0035
0036 #if !defined(BOOST_NO_SFINAE) && \
0037 !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x592))
0038 #include <boost/parameter/aux_/lambda_tag.hpp>
0039 #include <boost/mpl/lambda.hpp>
0040 #include <boost/mpl/bind.hpp>
0041 #include <boost/mpl/quote.hpp>
0042 #include <boost/core/enable_if.hpp>
0043
0044 namespace boost { namespace mpl {
0045
0046 template <typename T>
0047 struct lambda<
0048 T
0049 , typename ::boost::enable_if<
0050 ::boost::parameter::aux::is_name_tag<T>
0051 , ::boost::parameter::aux::lambda_tag
0052 >::type
0053 >
0054 {
0055 typedef ::boost::mpl::true_ is_le;
0056 typedef ::boost::mpl::bind3<
0057 ::boost::mpl::quote3< ::boost::parameter::value_type>
0058 , ::boost::mpl::arg<2>
0059 , T
0060 , void
0061 > result_;
0062 typedef result_ type;
0063 };
0064 }}
0065
0066 #endif
0067
0068 #include <boost/parameter/aux_/void.hpp>
0069
0070 #define BOOST_PARAMETER_TAG_PLACEHOLDER_TYPE(tag) \
0071 ::boost::parameter::value_type< \
0072 ::boost::mpl::_2,tag,::boost::parameter::void_ \
0073 >
0074
0075
0076 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0077 #define BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_VALUE(name, tag) \
0078 template <typename ArgumentPack> \
0079 using name = typename ::boost::parameter \
0080 ::value_type<ArgumentPack,tag,::boost::parameter::void_>::type
0081
0082
0083 #include <boost/parameter/binding.hpp>
0084
0085 #define BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_BINDING(name, tag) \
0086 template <typename ArgumentPack> \
0087 using name = typename ::boost::parameter \
0088 ::binding<ArgumentPack,tag,::boost::parameter::void_>::type
0089
0090
0091 #endif
0092 #endif
0093