https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60621
julien.blanc at laposte dot net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |julien.blanc at laposte dot net --- Comment #5 from julien.blanc at laposte dot net --- Testing a bit, it really looks like the issue resides in how and where the temporary string objects are created. Changing marc’s code to have struct S { S(const char* a, const char * b, const char *c); }; makes it reverting back to only 0.3k more text (which can be explained because two emplace_back function instanciation are needed vs one), and better insertion performance (insertion time is worse otherwise, which breaks emplace_back purpose). The same goes if strings are constructed before being passed to S constructor. (see new attachment). Looks like an optimizer issue to me. (note : tested with gcc 4.9.2)