https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96382
Bug ID: 96382 Summary: const_reverse_iterator() ctor is rejected in c++98 Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org CC: jwakely at redhat dot com Target Milestone: --- Original build failure is found on re2c-2.0 project. Minimal failing example: $ cat a.cc #include <vector> // g++-10.2.0 -c a.cc -std=c++98: // ok // // g++-11.0.0 -c a.cc -std=c++98: // ': current(__x.current) { } is protected within this context' bool f(void) { std::vector<int> v; std::vector<int>::const_reverse_iterator ri = v.rbegin(); return ri != v.rend(); } $ LANG=C g++-11.0.0 -c a.cc -std=c++98 In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/g++-v11/bits/stl_algobase.h:67, from /usr/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/g++-v11/vector:60, from a.cc:1: /usr/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/g++-v11/bits/stl_iterator.h: In instantiation of 'std::reverse_iterator<_Iterator>::reverse_iterator(const std::reverse_iterator<_Iter>&) [with _Iter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _Iterator = __gnu_cxx::__normal_iterator<const int*, std::vector<int> >]': a.cc:11:60: required from here /usr/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/g++-v11/bits/stl_iterator.h:203:23: error: '__gnu_cxx::__normal_iterator<int*, std::vector<int> > std::reverse_iterator<__gnu_cxx::__normal_iterator<int*, std::vector<int> > >::current' is protected within this context 203 | : current(__x.current) { } | ~~~~^~~~~~~ /usr/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include/g++-v11/bits/stl_iterator.h:146:17: note: declared protected here 146 | _Iterator current; | ^~~~~~~ $ LANG=C g++-10.2.0 -c a.cc -std=c++98 Probably started at https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=a5a8a4e61565a2a66391e29eb80813c581b7dc52