File indexing completed on 2025-01-30 09:34:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef BOOST_BIMAP_UNCONSTRAINED_SET_OF_HPP
0013 #define BOOST_BIMAP_UNCONSTRAINED_SET_OF_HPP
0014
0015 #if defined(_MSC_VER)
0016 #pragma once
0017 #endif
0018
0019 #include <boost/config.hpp>
0020
0021 #include <boost/bimap/detail/user_interface_config.hpp>
0022
0023 #include <boost/mpl/bool.hpp>
0024
0025 #include <boost/concept_check.hpp>
0026
0027 #include <boost/bimap/detail/concept_tags.hpp>
0028
0029 #include <boost/bimap/tags/support/value_type_of.hpp>
0030
0031 #include <boost/bimap/detail/generate_index_binder.hpp>
0032 #include <boost/bimap/detail/generate_view_binder.hpp>
0033 #include <boost/bimap/detail/generate_relation_binder.hpp>
0034
0035 #include <boost/bimap/views/unconstrained_map_view.hpp>
0036 #include <boost/bimap/views/unconstrained_set_view.hpp>
0037
0038 namespace boost {
0039 namespace bimaps {
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 template
0061 <
0062 class KeyType
0063 >
0064 struct unconstrained_set_of : public ::boost::bimaps::detail::set_type_of_tag
0065 {
0066
0067 typedef KeyType user_type;
0068
0069
0070 typedef BOOST_DEDUCED_TYPENAME ::boost::bimaps::tags::support::
0071 value_type_of<user_type>::type value_type;
0072
0073 struct lazy_concept_checked
0074 {
0075 BOOST_CLASS_REQUIRE ( value_type,
0076 boost, AssignableConcept );
0077
0078 typedef unconstrained_set_of type;
0079 };
0080
0081 BOOST_BIMAP_GENERATE_INDEX_BINDER_FAKE
0082
0083 BOOST_BIMAP_GENERATE_MAP_VIEW_BINDER(
0084
0085
0086 views::unconstrained_map_view
0087 )
0088
0089 BOOST_BIMAP_GENERATE_SET_VIEW_BINDER(
0090
0091
0092 views::unconstrained_set_view
0093 )
0094
0095 typedef mpl::bool_<true> mutable_key;
0096 };
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107 struct unconstrained_set_of_relation : public ::boost::bimaps::detail::set_type_of_relation_tag
0108 {
0109
0110 BOOST_BIMAP_GENERATE_RELATION_BINDER_0CP(
0111
0112
0113 unconstrained_set_of
0114 )
0115
0116 typedef mpl::bool_<true> left_mutable_key;
0117 typedef mpl::bool_<true> right_mutable_key;
0118 };
0119
0120 #ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES
0121
0122 namespace detail {
0123
0124 template<class T>
0125 struct is_unconstrained_set_of :
0126 ::boost::mpl::false_ {};
0127
0128 template<class T>
0129 struct is_unconstrained_set_of< unconstrained_set_of<T> > :
0130 ::boost::mpl::true_ {};
0131
0132 }
0133
0134 #endif
0135
0136 }
0137 }
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149 #endif
0150