https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109405
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ABI --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is expected. The unique_ptr implementation uses tuple<int*, SF> which is similarly dependent on whether the tuple elements are final or not. Originally, that was because we used inheritance in tuple, in order to take advantage of the empty-base class optimization. Obviously we can't use inheritance for final types. These days we do not use inheritance, we use the [[no_unique_address]] attribute so that empty tuple elements take no space. But to avoid an ABI incompatibility with previous versions of GCC, the attribute is only used for non-final types. There's no way to fix this without breaking the library's ABI.