@@ -184,6 +184,7 @@ struct dense_hashtable_iterator {
184184 private:
185185 using value_alloc_type =
186186 typename std::allocator_traits<A>::template rebind_alloc<V>;
187+ using value_alloc_traits = std::allocator_traits<value_alloc_type>;
187188
188189 public:
189190 typedef dense_hashtable_iterator<V, K, HF, ExK, SetK, EqK, A>
@@ -192,11 +193,11 @@ struct dense_hashtable_iterator {
192193 const_iterator;
193194
194195 typedef std::forward_iterator_tag iterator_category; // very little defined!
195- typedef V value_type;
196- typedef typename value_alloc_type ::difference_type difference_type;
197- typedef typename value_alloc_type ::size_type size_type;
198- typedef typename value_alloc_type::reference reference;
199- typedef typename value_alloc_type ::pointer pointer;
196+ typedef typename value_alloc_traits::value_type value_type;
197+ typedef typename value_alloc_traits ::difference_type difference_type;
198+ typedef typename value_alloc_traits ::size_type size_type;
199+ typedef value_type& reference;
200+ typedef typename value_alloc_traits ::pointer pointer;
200201
201202 // "Real" constructor and default constructor
202203 dense_hashtable_iterator (
@@ -248,6 +249,7 @@ struct dense_hashtable_const_iterator {
248249 private:
249250 using value_alloc_type =
250251 typename std::allocator_traits<A>::template rebind_alloc<V>;
252+ using value_alloc_traits = std::allocator_traits<value_alloc_type>;
251253
252254 public:
253255 typedef dense_hashtable_iterator<V, K, HF, ExK, SetK, EqK, A>
@@ -256,11 +258,11 @@ struct dense_hashtable_const_iterator {
256258 const_iterator;
257259
258260 typedef std::forward_iterator_tag iterator_category; // very little defined!
259- typedef V value_type;
260- typedef typename value_alloc_type ::difference_type difference_type;
261- typedef typename value_alloc_type ::size_type size_type;
262- typedef typename value_alloc_type::const_reference reference;
263- typedef typename value_alloc_type ::const_pointer pointer;
261+ typedef typename value_alloc_traits::value_type value_type;
262+ typedef typename value_alloc_traits ::difference_type difference_type;
263+ typedef typename value_alloc_traits ::size_type size_type;
264+ typedef const value_type& reference;
265+ typedef typename value_alloc_traits ::const_pointer pointer;
264266
265267 // "Real" constructor and default constructor
266268 dense_hashtable_const_iterator (
@@ -315,7 +317,7 @@ class dense_hashtable {
315317 private:
316318 using value_alloc_type =
317319 typename std::allocator_traits<Alloc>::template rebind_alloc<Value>;
318-
320+ using value_alloc_traits = std::allocator_traits<value_alloc_type>;
319321
320322 public:
321323 typedef Key key_type;
@@ -324,12 +326,12 @@ class dense_hashtable {
324326 typedef EqualKey key_equal;
325327 typedef Alloc allocator_type;
326328
327- typedef typename value_alloc_type ::size_type size_type;
328- typedef typename value_alloc_type ::difference_type difference_type;
329- typedef typename value_alloc_type::reference reference;
330- typedef typename value_alloc_type::const_reference const_reference;
331- typedef typename value_alloc_type ::pointer pointer;
332- typedef typename value_alloc_type ::const_pointer const_pointer;
329+ typedef typename value_alloc_traits ::size_type size_type;
330+ typedef typename value_alloc_traits ::difference_type difference_type;
331+ typedef value_type& reference;
332+ typedef const value_type& const_reference;
333+ typedef typename value_alloc_traits ::pointer pointer;
334+ typedef typename value_alloc_traits ::const_pointer const_pointer;
333335 typedef dense_hashtable_iterator<Value, Key, HashFcn,
334336 ExtractKey, SetKey, EqualKey, Alloc>
335337 iterator;
@@ -578,7 +580,9 @@ class dense_hashtable {
578580 // FUNCTIONS CONCERNING SIZE
579581 public:
580582 size_type size () const { return num_elements - num_deleted; }
581- size_type max_size () const { return get_allocator ().max_size (); }
583+ size_type max_size () const {
584+ return value_alloc_traits::max_size (get_allocator ());
585+ }
582586 bool empty () const { return size () == 0 ; }
583587 size_type bucket_count () const { return num_buckets; }
584588 size_type max_bucket_count () const { return max_size (); }
0 commit comments