https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107015
Bug ID: 107015 Summary: __debug::bitset has different ABI for -std=c++98 Product: gcc Version: 12.2.1 Status: UNCONFIRMED Keywords: ABI Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- g:17e3f4aa17624af245bae5408b6e5c1fdf90c9ec and the g:c5589aa7e1e8bf1e56d3c46d952675e1087be311 follow-up changed <debug/bitset> to not use the debug base container in C++11 mode, because that non-literal base class means that __debug::bitset is non-literal too. But that means that __debug::bitset is not ABI compatible between -std=c++98 and later modes. We should either remove the _Safe_sequence_base class unconditionally (and at that point, we might as well just get rid of <debug/bitset> and make it an alias for the normal one), or we should use the base unconditionally and give up the literal class property. The standard doesn't actually require is_literal_v<bitset<N>> to be true, although maybe it should.