1 // Copyright Cromwell D. Enage 2019. 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE_1_0.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 6 #ifndef BOOST_PARAMETER_AUX_IS_PLACEHOLDER_HPP 7 #define BOOST_PARAMETER_AUX_IS_PLACEHOLDER_HPP 8 9 #include <boost/parameter/config.hpp> 10 11 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 12 #include <boost/mp11/integral.hpp> 13 #else 14 #include <boost/mpl/bool.hpp> 15 #endif 16 17 namespace boost { namespace parameter { namespace aux { 18 19 template <typename T> 20 struct is_mpl_placeholder 21 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 22 : ::boost::mp11::mp_false 23 #else 24 : ::boost::mpl::false_ 25 #endif 26 { 27 }; 28 }}} // namespace boost::parameter::aux 29 30 #include <boost/mpl/arg_fwd.hpp> 31 32 namespace boost { namespace parameter { namespace aux { 33 34 template <int I> 35 struct is_mpl_placeholder< ::boost::mpl::arg<I> > 36 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 37 : ::boost::mp11::mp_true 38 #else 39 : ::boost::mpl::true_ 40 #endif 41 { 42 }; 43 }}} // namespace boost::parameter::aux 44 45 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 46 #include <boost/mp11/bind.hpp> 47 48 namespace boost { namespace parameter { namespace aux { 49 50 template <typename T> 51 struct is_mp11_placeholder : ::boost::mp11::mp_false 52 { 53 }; 54 55 template < ::std::size_t I> 56 struct is_mp11_placeholder< ::boost::mp11::mp_arg<I> > 57 : ::boost::mp11::mp_true 58 { 59 }; 60 }}} // namespace boost::parameter::aux 61 62 #endif // BOOST_PARAMETER_CAN_USE_MP11 63 #endif // include guard 64 65