https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89793
--- Comment #8 from du yang <duyang.seu at gmail dot com> --- > > struct Message { > template<typename T> > Message(T&& t) : s{t} { } > string s; > }; > By the way, it works on both GCC 8 & 7, if change the code above as below (change to use assignment), struct Message { template<typename T> Message(T&& t) { s = t; } string s; };