https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95825
--- Comment #9 from daniel.klauer at gin dot de --- Unless I'm missing something, this is not about unions. boost::optional (at least from boost 1.80.0) does not always use unions; instead it has two possible implementations: optional_base, which uses unions, and tc_optional_base, which does not. The original test case triggers the tc_optional_base case too.