https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65300
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Sigh, I still got it wrong, sorry! The default ctor is suppressed, because you declared: C(int c1, int c2, int c3) : A(c1, c2) {} The solution is still to declare it explicitly: C() = default;