https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96945
--- Comment #1 from Federico Kircheis <federico.kircheis at gmail dot com> --- I've made a copy-paste error (I cant change the submitted bug), after B) it should come C): Adding and defaulting the constructors, except the move constructor produces the same code as A): https://godbolt.org/z/ch71fb C) ---- #include <vector> struct c { c() = default; c(const c&) =default; }; void foo(){ std::vector<c> vi = {c(),c(),c()}; } ----