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.

Reply via email to