https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68525
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|rejects-valid | Last reconfirmed|2015-11-25 00:00:00 |2016-1-5 Target Milestone|--- |6.0 Known to fail| |4.8.4, 6.0 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Fails with the same message in GCC 4.8.4 but passes with GCC 5.3.0. Though I don't think this is valid code. Changing "T a[];" to "T a[1];" will cause it to be rejected with the same message. Basically GCC decides for B::B(), T::T() (aka A::A()) needs to exists and works. That is what the error message is saying. it is not really mysterious either.