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