[gcc(refs/users/guojiufu/heads/personal-branch)] libstdc++: Make COW string use allocator_traits for nested types
Jiu Fu Guo
guojiufu@gcc.gnu.org
Mon Aug 10 07:30:20 GMT 2020
https://gcc.gnu.org/g:684d6ee140af6585c18c8790f8f5bddfcc6bd153
commit 684d6ee140af6585c18c8790f8f5bddfcc6bd153
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jul 30 20:58:09 2020 +0100
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.
Diff:
---
libstdc++-v3/include/bits/basic_string.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index bc0c256b65e..52cecdd7ca1 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -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;
More information about the Libstdc++-cvs
mailing list