libstdc++: Make COW string use allocator_traits for nested types

When compiled as C++20 the COW std::string fails due to assuming that
the allocator always defines size_type and difference_type. That has
been incorrect since C++11, but we got away with it for specializations
using std::allocator until those members were removed in C++20.

libstdc++-v3/ChangeLog:

	* include/bits/basic_string.h (size_type, difference_type):
	Use allocator_traits to obtain the allocator's size_type and
	difference_type.
This commit is contained in:
Jonathan Wakely 2020-07-30 20:58:09 +01:00
parent e513e9aa53
commit 684d6ee140
1 changed files with 2 additions and 2 deletions

View File

@ -3147,8 +3147,8 @@ _GLIBCXX_END_NAMESPACE_CXX11
typedef _Traits traits_type;
typedef typename _Traits::char_type value_type;
typedef _Alloc allocator_type;
typedef typename _CharT_alloc_type::size_type size_type;
typedef typename _CharT_alloc_type::difference_type difference_type;
typedef typename _CharT_alloc_traits::size_type size_type;
typedef typename _CharT_alloc_traits::difference_type difference_type;
#if __cplusplus < 201103L
typedef typename _CharT_alloc_type::reference reference;
typedef typename _CharT_alloc_type::const_reference const_reference;