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
17namespace 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
32namespace 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
48namespace 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

source code of include/boost/parameter/aux_/is_placeholder.hpp