@@ -201,22 +201,11 @@ struct __hash_node_types;
201201
202202template <class _NodePtr , class _Tp , class _VoidPtr >
203203struct __hash_node_types <_NodePtr, __hash_node<_Tp, _VoidPtr> > {
204- typedef ptrdiff_t difference_type;
205- typedef size_t size_type;
206-
207- typedef __rebind_pointer_t <_NodePtr, void > __void_pointer;
208-
209204 typedef typename pointer_traits<_NodePtr>::element_type __node_type;
210- typedef _NodePtr __node_pointer;
211205
212- typedef __hash_node_base<__node_pointer> __node_base_type;
213- typedef __rebind_pointer_t <_NodePtr, __node_base_type> __node_base_pointer;
214-
215- typedef typename __node_base_type::__next_pointer __next_pointer;
206+ typedef typename __hash_node_base<_NodePtr>::__next_pointer __next_pointer;
216207
217208 using __node_value_type _LIBCPP_NODEBUG = __get_hash_node_value_type_t <_Tp>;
218- typedef __rebind_pointer_t <_VoidPtr, __node_value_type> __node_value_type_pointer;
219- typedef __rebind_pointer_t <_VoidPtr, const __node_value_type> __const_node_value_type_pointer;
220209
221210private:
222211 static_assert (!is_const<__node_type>::value, " _NodePtr should never be a pointer to const" );
@@ -237,13 +226,6 @@ struct __hash_node_types_from_iterator<__hash_local_iterator<_NodePtr> > : __has
237226template <class _NodePtr >
238227struct __hash_node_types_from_iterator <__hash_const_local_iterator<_NodePtr> > : __hash_node_types<_NodePtr> {};
239228
240- template <class _NodeValueTp , class _VoidPtr >
241- struct __make_hash_node_types {
242- typedef __hash_node<_NodeValueTp, _VoidPtr> _NodeTp;
243- typedef __rebind_pointer_t <_VoidPtr, _NodeTp> _NodePtr;
244- typedef __hash_node_types<_NodePtr> type;
245- };
246-
247229template <class _NodePtr >
248230class __hash_iterator {
249231 typedef __hash_node_types<_NodePtr> _NodeTypes;
@@ -255,9 +237,9 @@ class __hash_iterator {
255237public:
256238 typedef forward_iterator_tag iterator_category;
257239 typedef typename _NodeTypes::__node_value_type value_type;
258- typedef typename _NodeTypes:: difference_type difference_type ;
240+ using difference_type = ptrdiff_t ;
259241 typedef value_type& reference;
260- typedef typename _NodeTypes::__node_value_type_pointer pointer ;
242+ using pointer = __rebind_pointer_t <_NodePtr, value_type> ;
261243
262244 _LIBCPP_HIDE_FROM_ABI __hash_iterator () _NOEXCEPT : __node_(nullptr ) {}
263245
@@ -322,9 +304,9 @@ public:
322304
323305 typedef forward_iterator_tag iterator_category;
324306 typedef typename _NodeTypes::__node_value_type value_type;
325- typedef typename _NodeTypes:: difference_type difference_type ;
307+ using difference_type = ptrdiff_t ;
326308 typedef const value_type& reference;
327- typedef typename _NodeTypes::__const_node_value_type_pointer pointer ;
309+ using pointer = __rebind_pointer_t <_NodePtr, const value_type> ;
328310
329311 _LIBCPP_HIDE_FROM_ABI __hash_const_iterator () _NOEXCEPT : __node_(nullptr ) {}
330312
@@ -387,9 +369,9 @@ class __hash_local_iterator {
387369public:
388370 typedef forward_iterator_tag iterator_category;
389371 typedef typename _NodeTypes::__node_value_type value_type;
390- typedef typename _NodeTypes:: difference_type difference_type ;
372+ using difference_type = ptrdiff_t ;
391373 typedef value_type& reference;
392- typedef typename _NodeTypes::__node_value_type_pointer pointer ;
374+ using pointer = __rebind_pointer_t <_NodePtr, value_type> ;
393375
394376 _LIBCPP_HIDE_FROM_ABI __hash_local_iterator () _NOEXCEPT : __node_(nullptr ) {}
395377
@@ -465,9 +447,9 @@ public:
465447
466448 typedef forward_iterator_tag iterator_category;
467449 typedef typename _NodeTypes::__node_value_type value_type;
468- typedef typename _NodeTypes:: difference_type difference_type ;
450+ using difference_type = ptrdiff_t ;
469451 typedef const value_type& reference;
470- typedef typename _NodeTypes::__const_node_value_type_pointer pointer ;
452+ using pointer = __rebind_pointer_t <_ConstNodePtr, const value_type> ;
471453
472454 _LIBCPP_HIDE_FROM_ABI __hash_const_local_iterator () _NOEXCEPT : __node_(nullptr ) {}
473455
@@ -646,33 +628,32 @@ public:
646628
647629private:
648630 typedef allocator_traits<allocator_type> __alloc_traits;
649- typedef typename __make_hash_node_types<_Tp, typename __alloc_traits::void_pointer>::type _NodeTypes;
650631
651632public:
652- typedef typename _NodeTypes::__node_value_type __node_value_type;
653633 typedef value_type& reference;
654634 typedef const value_type& const_reference;
655635 typedef typename __alloc_traits::pointer pointer;
656636 typedef typename __alloc_traits::const_pointer const_pointer;
657637#ifndef _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE
658638 typedef typename __alloc_traits::size_type size_type;
659639#else
660- typedef typename _NodeTypes:: size_type size_type ;
640+ using size_type = size_t ;
661641#endif
662- typedef typename _NodeTypes:: difference_type difference_type ;
642+ using difference_type = ptrdiff_t ;
663643
664644public:
665645 // Create __node
666646
667- typedef typename _NodeTypes::__node_type __node;
668- typedef __rebind_alloc<__alloc_traits, __node> __node_allocator;
669- typedef allocator_traits<__node_allocator> __node_traits;
670- typedef typename _NodeTypes::__void_pointer __void_pointer;
671- typedef typename _NodeTypes::__node_pointer __node_pointer;
672- typedef typename _NodeTypes::__node_pointer __node_const_pointer;
673- typedef typename _NodeTypes::__node_base_type __first_node;
674- typedef typename _NodeTypes::__node_base_pointer __node_base_pointer;
675- typedef typename _NodeTypes::__next_pointer __next_pointer;
647+ using __void_pointer _LIBCPP_NODEBUG = typename __alloc_traits::void_pointer;
648+
649+ using __node _LIBCPP_NODEBUG = __hash_node<_Tp, __void_pointer>;
650+ using __node_allocator _LIBCPP_NODEBUG = __rebind_alloc<__alloc_traits, __node>;
651+ using __node_traits _LIBCPP_NODEBUG = allocator_traits<__node_allocator>;
652+ using __node_pointer _LIBCPP_NODEBUG = __rebind_pointer_t <__void_pointer, __node>;
653+
654+ using __first_node _LIBCPP_NODEBUG = __hash_node_base<__node_pointer>;
655+ using __node_base_pointer _LIBCPP_NODEBUG = __rebind_pointer_t <__void_pointer, __first_node>;
656+ using __next_pointer _LIBCPP_NODEBUG = __node_base_pointer;
676657
677658private:
678659 // check for sane allocator pointer rebinding semantics. Rebinding the
0 commit comments