https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114123
--- Comment #3 from Yaxun Liu <yx_liu at hotmail dot com> --- So, since vector<A> has a ctor that accepts initializer list, that ctor is favored over its copy ctor. With the initializer-list ctor, a is converted to A(a) first, then {A(a)} is passed to that ctor.