https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103629
--- Comment #17 from Jonathan Wakely <redi at gcc dot gnu.org> --- The difference is due to this change in std::call_once - __once_callable = std::__addressof(__callable); // NOLINT: PR 82481 - __once_call = []{ (*(decltype(__callable)*)__once_callable)(); }; + once_flag::_Prepare_execution __exec(__callable); But I don't know why.