https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94685
Bug ID: 94685 Summary: Misleading error: array must be initialized with a brace-enclosed initializer Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- using A = int[1]; using AA = A[1]; AA a1{A{1}}; ntconsarr.cc:3:9: error: array must be initialized with a brace-enclosed initializer 3 | AA a1{A{1}}; | ^~~~ This clearly *is* a brace-enclosed initializer, so the error is not telling us the real problem. Clang is better: $ clang++ ntconsarr.cc ntconsarr.cc:3:9: error: cannot initialize an array element of type 'int' with an rvalue of type 'A' (aka 'int [1]') AA a1{A{1}}; ^~~~ EDG is different, but I'm not sure it's correct: $ edg --c++14 ntconsarr.cc "ntconsarr.cc", line 3: error: a value of type "int *" cannot be used to initialize an entity of type "int" AA a1{A{1}}; ^