https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98978
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to andysem from comment #3) > Is there no way to improve standard components implementation? I'd imagine > you could provide the new implementation in the new version inline namespace > and still support the old ABI for backward compatibility. Yes ABI changes can be done for the --enable-symvers=gnu-versioned-namespace configuration, but nobody uses it so anything invasive like this is not worth the effort. > This would be more problematic as emplace(), value() and operator*() need to > return T&, which would not be possible. Use 0xff to mean disengaged, and 0x00 and 0x01 for engaged. You only need to return a reference when it's engaged.