https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105683
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Don't use braced-init here: case Type::Type8: new (&m_impl.m_value8) std::vector<ossia::value>{std::move(other.m_impl.m_value8)}; If you use parens, it works as you expect.