https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99841
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The question is: mm_pair_t<type> m{type(1), type(2)}; I think GCC is correct here, type(1) is a temp and it does not bind to a field directly, it goes through a constructure and therefor the temp goes away right after the statement is done.