[Bug libstdc++/107015] New: __debug::bitset has different ABI for -std=c++98
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 23 11:26:05 GMT 2022
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.
More information about the Gcc-bugs
mailing list