https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104636
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|1 |0 Status|WAITING |UNCONFIRMED --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The code does: /* When converting from an init list we consider explicit constructors, but actually trying to call one is an error. */ if (DECL_NONCONVERTING_P (convfn) && DECL_CONSTRUCTOR_P (convfn) && BRACE_ENCLOSED_INITIALIZER_P (expr) /* Unless this is for direct-list-initialization. */ && (!CONSTRUCTOR_IS_DIRECT_INIT (expr) || convs->need_temporary_p) /* And in C++98 a default constructor can't be explicit. */ && cxx_dialect >= cxx11) { if (!(complain & tf_error)) return error_mark_node; location_t loc = location_of (expr); if (CONSTRUCTOR_NELTS (expr) == 0 && FUNCTION_FIRST_USER_PARMTYPE (convfn) != void_list_node) { auto_diagnostic_group d; if (pedwarn (loc, 0, "converting to %qT from initializer list " "would use explicit constructor %qD", totype, convfn)) inform (loc, "in C++11 and above a default constructor " "can be explicit"); } else error ("converting to %qT from initializer list would use " "explicit constructor %qD", totype, convfn); } Again I don't think this is a bug.