Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Copyright Daniel Wallin 2006.
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_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 }}} // namespace boost::parameter::aux
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 }}} // namespace boost::parameter::aux
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 }} // namespace boost::mpl
0065 
0066 #endif  // SFINAE enabled, not Borland.
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  // BOOST_PARAMETER_CAN_USE_MP11
0092 #endif  // include guard
0093