https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58753
--- Comment #12 from Paolo Carlini <paolo.carlini at oracle dot com> --- It is in Comment #2, though. In fact, I *only* noticed that one when I asked ;) Anyway, I was looking a bit into the other bug and interestingly a rather rough draft I have got appears to fix all these issues at once without causing regressions: Index: init.c =================================================================== --- init.c (revision 210459) +++ init.c (working copy) @@ -644,7 +644,8 @@ || (TREE_CODE (init) == TREE_LIST && DIRECT_LIST_INIT_P (TREE_VALUE (init)))) && (CP_AGGREGATE_TYPE_P (type) - || is_std_init_list (type))))) + || is_std_init_list (type))) + || DIRECT_LIST_INIT_P (init))) { /* With references and list-initialization, we need to deal with extending temporary lifetimes. 12.2p5: "A temporary bound to a