123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- // Copyright Daniel Wallin 2006.
- // Distributed under the Boost Software License, Version 1.0.
- // (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #ifndef BOOST_PARAMETER_AUX_NAME_HPP
- #define BOOST_PARAMETER_AUX_NAME_HPP
- namespace boost { namespace parameter { namespace aux {
- struct name_tag_base
- {
- };
- template <typename Tag>
- struct name_tag
- {
- };
- }}} // namespace boost::parameter::aux
- #include <boost/mpl/bool.hpp>
- namespace boost { namespace parameter { namespace aux {
- template <typename T>
- struct is_name_tag : ::boost::mpl::false_
- {
- };
- }}} // namespace boost::parameter::aux
- #include <boost/parameter/value_type.hpp>
- #include <boost/mpl/placeholders.hpp>
- #include <boost/config.hpp>
- #include <boost/config/workaround.hpp>
- #if !defined(BOOST_NO_SFINAE) && \
- !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x592))
- #include <boost/parameter/aux_/lambda_tag.hpp>
- #include <boost/mpl/lambda.hpp>
- #include <boost/mpl/bind.hpp>
- #include <boost/mpl/quote.hpp>
- #include <boost/core/enable_if.hpp>
- namespace boost { namespace mpl {
- template <typename T>
- struct lambda<
- T
- , typename ::boost::enable_if<
- ::boost::parameter::aux::is_name_tag<T>
- , ::boost::parameter::aux::lambda_tag
- >::type
- >
- {
- typedef ::boost::mpl::true_ is_le;
- typedef ::boost::mpl::bind3<
- ::boost::mpl::quote3< ::boost::parameter::value_type>
- , ::boost::mpl::arg<2>
- , T
- , void
- > result_;
- typedef result_ type;
- };
- }} // namespace boost::mpl
- #endif // SFINAE enabled, not Borland.
- #include <boost/parameter/aux_/void.hpp>
- #define BOOST_PARAMETER_TAG_PLACEHOLDER_TYPE(tag) \
- ::boost::parameter::value_type< \
- ::boost::mpl::_2,tag,::boost::parameter::void_ \
- >
- /**/
- #if defined(BOOST_PARAMETER_CAN_USE_MP11)
- #define BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_VALUE(name, tag) \
- template <typename ArgumentPack> \
- using name = typename ::boost::parameter \
- ::value_type<ArgumentPack,tag,::boost::parameter::void_>::type
- /**/
- #include <boost/parameter/binding.hpp>
- #define BOOST_PARAMETER_TAG_MP11_PLACEHOLDER_BINDING(name, tag) \
- template <typename ArgumentPack> \
- using name = typename ::boost::parameter \
- ::binding<ArgumentPack,tag,::boost::parameter::void_>::type
- /**/
- #endif // BOOST_PARAMETER_CAN_USE_MP11
- #endif // include guard
|