41 #ifndef PB_DS_TYPES_TRAITS_HPP
42 #define PB_DS_TYPES_TRAITS_HPP
60 template<
typename Key,
typename Mapped>
63 static const bool __simple = is_simple<Key>::value
64 && is_simple<Mapped>::value;
65 typedef integral_constant<int, __simple> indicator;
69 template<
typename Key>
72 typedef integral_constant<int, is_simple<Key>::value> indicator;
77 template<
typename _Tv>
80 typedef _Tv value_type;
85 template<
typename _Th>
88 typedef _Th hash_type;
94 template<
typename _Tv,
typename _Th,
bool Store_Hash>
100 template<
typename _Tv,
typename _Th>
106 template<
typename Key,
typename Mapped>
113 template<
typename Key>
120 template<
typename Key,
typename Mapped,
typename _Alloc,
bool Store_Hash>
125 template<
typename Key,
typename _Alloc,
bool Store_Hash>
131 template<
typename Key,
typename _Alloc,
bool Store_Hash>
136 template<
typename _Alloc,
typename T>
138 #if __cplusplus >= 201103L
141 using reference = T&;
142 using const_reference =
const T&;
145 : _Alloc::template rebind<T>::other
147 typedef typename _Alloc::template rebind<T>::other allocator_type;
153 template<
typename Key,
typename Mapped,
typename _Alloc,
bool Store_Hash>
158 typedef typename _Alloc::size_type size_type;
160 typedef Key key_type;
161 typedef Mapped mapped_type;
171 typedef typename __rebind_ma::pointer mapped_pointer;
172 typedef typename __rebind_ma::const_pointer mapped_const_pointer;
173 typedef typename __rebind_ma::reference mapped_reference;
174 typedef typename __rebind_ma::const_reference mapped_const_reference;
176 typedef typename __rebind_va::pointer pointer;
177 typedef typename __rebind_va::const_pointer const_pointer;
178 typedef typename __rebind_va::reference reference;
179 typedef typename __rebind_va::const_reference const_reference;
183 typedef typename __rebind_ka::pointer key_pointer;
184 typedef typename __rebind_ka::const_pointer key_const_pointer;
185 typedef typename __rebind_ka::reference key_reference;
186 typedef typename __rebind_ka::const_reference key_const_reference;
188 typedef integral_constant<int, Store_Hash> store_extra;
189 typedef typename __nothrowcopy::indicator no_throw_indicator;
191 store_extra m_store_extra_indicator;
192 no_throw_indicator m_no_throw_copies_indicator;
Struct holding two objects of arbitrary type.
Choose value_type to be a key/value pair or just a key.
Uniform interface to all allocator types.
Traits for abstract types.
Primary template for representation of stored data. Two types of data can be stored: value and hash...
Base class for conditionally defining a static data member.
Consistent API for accessing allocator-related types.
Represents no type, or absence of type, for template tricks.