mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
Adjust tr1::_Hashtable to work with std::allocator in C++20
In C++20 std::allocator will no longer define construct and destroy member functions, so using them needs to go via allocator_traits. * include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use __gnu_cxx::__alloc_traits for allocator construct function. (tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function. From-SVN: r276575
This commit is contained in:
committed by
Jonathan Wakely
parent
8384956a1b
commit
44e4da6505
@@ -1,5 +1,9 @@
|
||||
2019-10-04 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
|
||||
__gnu_cxx::__alloc_traits for allocator construct function.
|
||||
(tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
|
||||
|
||||
* include/precompiled/stdc++.h: Include <span> for C++20.
|
||||
* testsuite/17_intro/names.cc: Do not define 'e' for C++20.
|
||||
|
||||
|
||||
@@ -429,7 +429,9 @@ namespace tr1
|
||||
_Node* __n = _M_node_allocator.allocate(1);
|
||||
__try
|
||||
{
|
||||
_M_get_Value_allocator().construct(&__n->_M_v, __v);
|
||||
_Value_allocator_type __a = _M_get_Value_allocator();
|
||||
typedef __gnu_cxx::__alloc_traits<_Value_allocator_type> _Traits;
|
||||
_Traits::construct(__a, &__n->_M_v, __v);
|
||||
__n->_M_next = 0;
|
||||
return __n;
|
||||
}
|
||||
@@ -449,7 +451,9 @@ namespace tr1
|
||||
_H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>::
|
||||
_M_deallocate_node(_Node* __n)
|
||||
{
|
||||
_M_get_Value_allocator().destroy(&__n->_M_v);
|
||||
_Value_allocator_type __a = _M_get_Value_allocator();
|
||||
typedef __gnu_cxx::__alloc_traits<_Value_allocator_type> _Traits;
|
||||
_Traits::destroy(__a, &__n->_M_v);
|
||||
_M_node_allocator.deallocate(__n, 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user