this patch fixes 78771, were an assert fires due to recursive
instantiation of an inheriting ctor. Normally when a recursive
instantiation is needed, we've already constructed and registered the
declaration, so simply return it. For ctors though we need to construct
the clones after we've instantiated the the master pattern (later in
instantiate_template_1). Hence any recursive instantiation of a cloned
fn will barf, as we do.
Now, with an inherited ctor we have to deduce its exception spec and
deletedness (deduce_inheriting_ctor). That's fine, until one gets the
perverse testcase here. In figuring out what Middle ctor is needed by
Middle(0), we end up trying to instantiate Derived::Derived (int) to see
if Middle::Middle (Derived) is a viable candidate.