http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60417
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- Still a regression for aggregate-initialization of arrays: struct A { explicit A(int = 0); }; int main() { A a[1] = { }; } zzz.cc: In function ‘int main()’: zzz.cc:5:14: error: converting to ‘A’ from initializer list would use explicit constructor ‘A::A(int)’ A a[1] = { }; ^ And similarly for array members that are list-initialized: struct A { explicit A(int = 0); }; struct B { A a[1]; B() : a{} {} }; int main() { B b; } zz.cc: In constructor ‘B::B()’: zz.cc:2:28: error: converting to ‘A’ from initializer list would use explicit constructor ‘A::A(int)’ struct B { A a[1]; B() : a{} {} }; ^