https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87676
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- The template constructor allows s({1, 2, 3}) to mean s(S2{1,2,3}) which tries to use the deleted copy constructor. Without the template constructor it can only mean s(S1{1,2,3}) which uses the move constructor. So I think GCC is correct.