https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87061
Bug ID: 87061 Summary: [9 Regression] regex cannot be compiled with -std=c++1z -D_GLIBCXX_USE_CXX11_ABI=0 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org Target Milestone: --- Using the regex header (like in the code snippet below) with the the options "-std=c++1z -D_GLIBCXX_USE_CXX11_ABI=0" results in an error message. This is a regression introduced between 2018-07-26 and 2018-08-17. =================================== #include <regex> =================================== In file included from /gcc-9/include/c++/9.0.0/string:52, from /gcc-9/include/c++/9.0.0/bitset:47, from /gcc-9/include/c++/9.0.0/regex:39, from bug.cc:1: /gcc-9/include/c++/9.0.0/bits/basic_string.h: In instantiation of 'class std::basic_string<char, std::char_traits<char>, std::pmr::polymorphic_allocator<char> >': /gcc-9/include/c++/9.0.0/regex:77:41: required from here /gcc-9/include/c++/9.0.0/bits/basic_string.h:3103:63: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 3103 | typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; | ^~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3116:68: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 3116 | typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; | ^~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3118:61: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 3118 | const_iterator; | ^~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3119:53: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 3119 | typedef std::reverse_iterator<const_iterator> const_reverse_iterator; | ^~~~~~~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3120:52: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 3120 | typedef std::reverse_iterator<iterator> reverse_iterator; | ^~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5233:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5233 | find(const _Tp& __svt, size_type __pos = 0) const | ^~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5311:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5311 | rfind(const _Tp& __svt, size_type __pos = npos) const | ^~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5395:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5395 | find_first_of(const _Tp& __svt, size_type __pos = 0) const | ^~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5479:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5479 | find_last_of(const _Tp& __svt, size_type __pos = npos) const | ^~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5560:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5560 | find_first_not_of(const _Tp& __svt, size_type __pos = 0) const | ^~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5642:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<char>' 5642 | find_last_not_of(const _Tp& __svt, size_type __pos = npos) const | ^~~~~~~~~~~~~~~~ In file included from bug.cc:3: /gcc-9/include/c++/9.0.0/regex:77:57: error: template argument 1 is invalid 77 | using smatch = match_results<string::const_iterator>; | ^ In file included from /gcc-9/include/c++/9.0.0/string:52, from /gcc-9/include/c++/9.0.0/bitset:47, from /gcc-9/include/c++/9.0.0/regex:39, from bug.cc:1: /gcc-9/include/c++/9.0.0/bits/basic_string.h: In instantiation of 'class std::basic_string<wchar_t, std::char_traits<wchar_t>, std::pmr::polymorphic_allocator<wchar_t> >': /gcc-9/include/c++/9.0.0/regex:80:42: required from here /gcc-9/include/c++/9.0.0/bits/basic_string.h:3103:63: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 3103 | typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type; | ^~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3116:68: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 3116 | typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator; | ^~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3118:61: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 3118 | const_iterator; | ^~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3119:53: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 3119 | typedef std::reverse_iterator<const_iterator> const_reverse_iterator; | ^~~~~~~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:3120:52: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 3120 | typedef std::reverse_iterator<iterator> reverse_iterator; | ^~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5233:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5233 | find(const _Tp& __svt, size_type __pos = 0) const | ^~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5311:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5311 | rfind(const _Tp& __svt, size_type __pos = npos) const | ^~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5395:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5395 | find_first_of(const _Tp& __svt, size_type __pos = 0) const | ^~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5479:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5479 | find_last_of(const _Tp& __svt, size_type __pos = npos) const | ^~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5560:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5560 | find_first_not_of(const _Tp& __svt, size_type __pos = 0) const | ^~~~~~~~~~~~~~~~~ /gcc-9/include/c++/9.0.0/bits/basic_string.h:5642:2: error: no class template named 'rebind' in 'class std::pmr::polymorphic_allocator<wchar_t>' 5642 | find_last_not_of(const _Tp& __svt, size_type __pos = npos) const | ^~~~~~~~~~~~~~~~ In file included from bug.cc:3: /gcc-9/include/c++/9.0.0/regex:80:58: error: template argument 1 is invalid 80 | using wsmatch = match_results<wstring::const_iterator>; | ^