Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:59:15

0001 // Copyright David Abrahams, Daniel Wallin 2003.
0002 // Distributed under the Boost Software License, Version 1.0.
0003 // (See accompanying file LICENSE_1_0.txt or copy at
0004 // http://www.boost.org/LICENSE_1_0.txt)
0005 
0006 #ifndef BOOST_PARAMETER_AUX_PACK_MAKE_DEDUCED_ITEMS_HPP
0007 #define BOOST_PARAMETER_AUX_PACK_MAKE_DEDUCED_ITEMS_HPP
0008 
0009 #include <boost/parameter/aux_/void.hpp>
0010 #include <boost/parameter/aux_/pack/deduced_item.hpp>
0011 #include <boost/parameter/deduced.hpp>
0012 #include <boost/parameter/config.hpp>
0013 
0014 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0015 #include <boost/mp11/utility.hpp>
0016 #include <type_traits>
0017 #else
0018 #include <boost/mpl/eval_if.hpp>
0019 #include <boost/mpl/identity.hpp>
0020 #include <boost/type_traits/is_same.hpp>
0021 #endif
0022 
0023 namespace boost { namespace parameter { namespace aux {
0024 
0025     template <typename Spec, typename Tail>
0026 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0027     using make_deduced_items = ::boost::mp11::mp_if<
0028         ::std::is_same<Spec,::boost::parameter::void_>
0029       , ::boost::mp11::mp_identity< ::boost::parameter::void_>
0030       , ::boost::mp11::mp_if<
0031             ::boost::parameter::aux::is_deduced<Spec>
0032           , ::boost::parameter::aux::make_deduced_item<Spec,Tail>
0033           , Tail
0034         >
0035     >;
0036 #else
0037     struct make_deduced_items
0038       : ::boost::mpl::eval_if<
0039             ::boost::is_same<Spec,::boost::parameter::void_>
0040           , ::boost::mpl::identity< ::boost::parameter::void_>
0041           , ::boost::mpl::eval_if<
0042                 ::boost::parameter::aux::is_deduced<Spec>
0043               , ::boost::parameter::aux::make_deduced_item<Spec,Tail>
0044               , Tail
0045             >
0046         >
0047     {
0048     };
0049 #endif  // BOOST_PARAMETER_CAN_USE_MP11
0050 }}} // namespace boost::parameter::aux
0051 
0052 #endif  // include guard
0053