http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61080
--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Paolo Carlini from comment #5) > Thanks. Thus should we go back to the pre-r210043 behavior and somehow > handle the case in instantiate_decl under the early: > > if (/* If there is no definition, we cannot instantiate the > template. */ > ! pattern_defined > /* If it's OK to postpone instantiation, do so. */ > || defer_ok > /* If this is a static data member that will be defined > elsewhere, we don't want to instantiate the entire data > member, but we do want to instantiate the initializer so that > we can substitute that elsewhere. */ > || (external_p && VAR_P (d))) > { > /* .... */ > > which does very few checks and then soon does goto out? Yes, we probably want to add a deleted check to this condition.