Discussion on the committee reflectors referred me to N2634, the design paper for the new SFINAE rules, which says that exceeding an implementation limit is a hard error, not a substitution failure. So this patch does away with the tracking of indivitual substitutions and just uses push_tinst_level to handle nesting. On enum11.C the compiler crashes before hitting the limit of 1024 due to excessive recursion, so I've lowered the default for -ftemplate-depth to 900. Tested x86_64-pc-linux-gnu, applied to trunk.