https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68525
Bug ID: 68525 Summary: bogus use of deleted function error on a template with a flexible array member Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- Recent trunk gets confused by the program below into issuing a rather mysterious error. Both Clang and Gcc 5.1 compile the code without an error. $ cat z.cpp && /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -Wall -Wextra -Wpedantic -O2 -S -o/dev/tty -xc++ z.cpp template <class T> struct A { int n; T a[]; }; struct B { B (int); }; A<B> ab; .file "z.cpp" z.cpp:4:9: warning: ISO C++ forbids zero-size array ‘a’ [-Wpedantic] T a[]; ^ z.cpp:9:6: error: use of deleted function ‘A<B>::A()’ A<B> ab; ^~ z.cpp:2:8: note: ‘A<B>::A()’ is implicitly deleted because the default definition would be ill-formed: struct A { ^ z.cpp:2:8: error: no matching function for call to ‘B::B()’ z.cpp:7:12: note: candidate: B::B(int) struct B { B (int); }; ^ z.cpp:7:12: note: candidate expects 1 argument, 0 provided z.cpp:7:8: note: candidate: constexpr B::B(const B&) struct B { B (int); }; ^ z.cpp:7:8: note: candidate expects 1 argument, 0 provided z.cpp:7:8: note: candidate: constexpr B::B(B&&) z.cpp:7:8: note: candidate expects 1 argument, 0 provided