https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79143
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Yeah, found the same in the mean time. Following works, I bet in the #c0 CLASSTYPE_NON_AGGREGATE isn't set on derived for some reason. struct base { base(int, int) {} }; template<class> struct derived : base { derived(int, int) : base(0, 0) {} }; int main() { base(13, 42); // Fine derived<int>(13, 42); // Fine base{13, 42}; // Fine derived<int>{13, 42}; // Fine }