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_ALWAYS_TRUE_PREDICATE_HPP 7 #define BOOST_PARAMETER_AUX_ALWAYS_TRUE_PREDICATE_HPP 8 9 #include <boost/parameter/config.hpp> 10 #include <boost/mpl/bool.hpp> 11 12 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) 13 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 14 #include <boost/mp11/integral.hpp> 15 #endif 16 #else 17 #include <boost/mpl/always.hpp> 18 #endif 19 20 namespace boost { namespace parameter { namespace aux { 21 22 #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) 23 struct always_true_predicate 24 { 25 template <typename ...> 26 struct apply 27 { 28 typedef ::boost::mpl::true_ type; 29 }; 30 31 #if defined(BOOST_PARAMETER_CAN_USE_MP11) 32 template <typename ...> 33 using fn = ::boost::mp11::mp_true; 34 #endif 35 }; 36 #else 37 typedef ::boost::mpl::always< ::boost::mpl::true_> always_true_predicate; 38 #endif // BOOST_NO_CXX11_VARIADIC_TEMPLATES 39 }}} // namespace boost::parameter::aux 40 41 #endif // include guard 42 43