https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88897
Rafael Avila de Espindola <rafael at espindo dot la> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #45452|0 |1 is obsolete| | Attachment #45453|0 |1 is obsolete| | --- Comment #4 from Rafael Avila de Espindola <rafael at espindo dot la> --- Created attachment 45475 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45475&action=edit testcase Now that I know what to look for I reduced the testcase again trying to make sure to not introduce uninitialized uses in the process. As far as I can tell the warning in the attached testcase is wrong. First an optional is constructed, but _M_engaged is false since it doesn't hold a value. It is then moved, but move constructor checks __other._M_engaged, so the temporary_buffer move constructor should never be called.