https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84447
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- My understanding is that this is because cand->fn in this case (the B ctor) is not DECL_DELETED_FN, but strip_inheriting_ctors (cand->fn) is, we somehow haven't tried to instantiate it (bailed early) and when we get into convert_default_arg, we try it with the non-instantiated A(T, T = 0) rather than with A(T, T = 0) [with T = int]. Returning error_mark_node from convert_default_arg in that case doesn't work though, because the bug is not diagnosed at all.