Commit c9960294 by Jonathan Wakely

libstdc++: Fix testsuite utility's use of allocators

In C++20 the rebind and const_reference members of std::allocator are
gone, so this testsuite utility stopped working, causing
ext/pb_ds/regression/priority_queue_rand_debug.cc to FAIL.

	* testsuite/util/native_type/native_priority_queue.hpp: Use
	allocator_traits to rebind allocator.
parent bd2420f8
2020-04-18 Jonathan Wakely <jwakely@redhat.com>
* testsuite/util/native_type/native_priority_queue.hpp: Use
allocator_traits to rebind allocator.
2020-04-17 Jonathan Wakely <jwakely@redhat.com> 2020-04-17 Jonathan Wakely <jwakely@redhat.com>
* include/bits/forward_list.h (forward_list): Define operator<=> and * include/bits/forward_list.h (forward_list): Define operator<=> and
......
...@@ -55,20 +55,30 @@ namespace __gnu_pbds ...@@ -55,20 +55,30 @@ namespace __gnu_pbds
struct base_seq struct base_seq
{ {
private: private:
typedef typename _Alloc::template rebind<Value_Type> value_rebind; #if __cplusplus >= 201103L
using value_alloc = typename std::allocator_traits<_Alloc>::template
rebind_alloc<Value_Type>;
#else
typedef typename _Alloc::template rebind<Value_Type>::other value_alloc;
#endif
public: public:
typedef std::vector<Value_Type, typename value_rebind::other> type; typedef std::vector<Value_Type, value_alloc> type;
}; };
template<typename Value_Type, typename _Alloc> template<typename Value_Type, typename _Alloc>
struct base_seq<Value_Type, false, _Alloc> struct base_seq<Value_Type, false, _Alloc>
{ {
private: private:
typedef typename _Alloc::template rebind<Value_Type> value_rebind; #if __cplusplus >= 201103L
using value_alloc = typename std::allocator_traits<_Alloc>::template
rebind_alloc<Value_Type>;
#else
typedef typename _Alloc::template rebind<Value_Type>::other value_alloc;
#endif
public: public:
typedef std::deque<Value_Type, typename value_rebind::other> type; typedef std::deque<Value_Type, value_alloc> type;
}; };
} // namespace detail } // namespace detail
...@@ -89,11 +99,16 @@ namespace __gnu_pbds ...@@ -89,11 +99,16 @@ namespace __gnu_pbds
{ {
private: private:
typedef PB_DS_BASE_C_DEC base_type; typedef PB_DS_BASE_C_DEC base_type;
typedef typename _Alloc::template rebind<Value_Type> value_rebind; #if __cplusplus >= 201103L
using value_ref = const Value_Type&;
#else
typedef typename
_Alloc::template rebind<Value_Type>::other::const_reference value_ref;
#endif
public: public:
typedef Value_Type value_type; typedef Value_Type value_type;
typedef typename value_rebind::other::const_reference const_reference; typedef value_ref const_reference;
typedef native_pq_tag container_category; typedef native_pq_tag container_category;
typedef Cmp_Fn cmp_fn; typedef Cmp_Fn cmp_fn;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment