File indexing completed on 2025-01-18 09:43:29
0001
0002
0003
0004
0005
0006 #ifndef BOOST_PARAMETER_SET_060912_HPP
0007 #define BOOST_PARAMETER_SET_060912_HPP
0008
0009 #include <boost/parameter/config.hpp>
0010
0011 #if defined(BOOST_PARAMETER_CAN_USE_MP11)
0012 #include <boost/mp11/list.hpp>
0013
0014 namespace boost { namespace parameter { namespace aux {
0015
0016 typedef ::boost::mp11::mp_list<> set0;
0017 }}}
0018
0019 #include <boost/mp11/algorithm.hpp>
0020
0021 namespace boost { namespace parameter { namespace aux {
0022
0023 template <typename S, typename K>
0024 struct insert_
0025 {
0026 using type = ::boost::mp11::mp_insert_c<S,0,K>;
0027 };
0028 }}}
0029
0030 #include <boost/mp11/integral.hpp>
0031 #include <boost/mp11/utility.hpp>
0032 #include <type_traits>
0033
0034 namespace boost { namespace parameter { namespace aux {
0035
0036 template <typename Set, typename K>
0037 struct has_key_
0038 {
0039 using type = ::boost::mp11::mp_if<
0040 ::boost::mp11::mp_empty<Set>
0041 , ::boost::mp11::mp_false
0042 , ::std::is_same<
0043 ::boost::mp11::mp_find<Set,K>
0044 , ::boost::mp11::mp_size<Set>
0045 >
0046 >;
0047 };
0048 }}}
0049
0050 #elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
0051 #include <boost/mpl/list.hpp>
0052
0053 namespace boost { namespace parameter { namespace aux {
0054
0055 typedef ::boost::mpl::list0<> set0;
0056 }}}
0057
0058 #include <boost/mpl/push_front.hpp>
0059
0060 namespace boost { namespace parameter { namespace aux {
0061
0062 template <typename Set, typename K>
0063 struct insert_ : ::boost::mpl::push_front<Set,K>
0064 {
0065 };
0066 }}}
0067
0068 #include <boost/mpl/bool.hpp>
0069 #include <boost/mpl/if.hpp>
0070 #include <boost/mpl/end.hpp>
0071 #include <boost/mpl/find.hpp>
0072 #include <boost/type_traits/is_same.hpp>
0073
0074 namespace boost { namespace parameter { namespace aux {
0075
0076 template <typename Set, typename K>
0077 struct has_key_
0078 {
0079 typedef typename ::boost::mpl::find<Set,K>::type iter;
0080 typedef typename ::boost::mpl::if_<
0081 ::boost::is_same<iter,typename ::boost::mpl::end<Set>::type>
0082 , ::boost::mpl::false_
0083 , ::boost::mpl::true_
0084 >::type type;
0085 };
0086 }}}
0087
0088 #else
0089 #include <boost/mpl/set/set0.hpp>
0090
0091 namespace boost { namespace parameter { namespace aux {
0092
0093 typedef ::boost::mpl::set0<> set0;
0094 }}}
0095
0096 #include <boost/mpl/insert.hpp>
0097
0098 namespace boost { namespace parameter { namespace aux {
0099
0100 template <typename Set, typename K>
0101 struct insert_ : ::boost::mpl::insert<Set,K>
0102 {
0103 };
0104 }}}
0105
0106 #include <boost/mpl/has_key.hpp>
0107
0108 namespace boost { namespace parameter { namespace aux {
0109
0110 template <typename Set, typename K>
0111 struct has_key_ : ::boost::mpl::has_key<Set,K>
0112 {
0113 };
0114 }}}
0115
0116 #endif
0117 #endif
0118