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;
GNU extensions for policy-based data structures for public use.
Uniform interface to all allocator types.
Struct holding two objects of arbitrary type.
Represents no type, or absence of type, for template tricks.
Primary template for representation of stored data. Two types of data can be stored: value and hash.
Choose value_type to be a key/value pair or just a key.
Base class for conditionally defining a static data member.
Consistent API for accessing allocator-related types.
Traits for abstract types.