On Jan 21, 2019, Jason Merrill <ja...@redhat.com> wrote: > "does this have its own template arguments, not just the ones from its > enclosing class?"
> Perhaps compare the number of levels of template arguments of the > function to that of its enclosing context? Is this the logic you had in mind? Or can we assume DECL_P to always be false at that point, because if the context has template info it must be a class? (I'm not sure about the context of generic lambdas) Any suggestion of a good name for the inline function (or would you prefer it to be a macro?) that tests whether a decl satisfies this predicate? primary_or_partial_spec_p? Thanks, @@ -25622,7 +25622,17 @@ type_dependent_expression_p (tree expression) that come from the template-id; the template arguments for the enclosing class do not make it type-dependent unless they are used in the type of the decl. */ - if (PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (expression)) + if ((PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (expression)) + || (DECL_TEMPLATE_SPECIALIZATION (DECL_TI_TEMPLATE (expression)) + && (DECL_P (DECL_CONTEXT (expression)) + ? (!DECL_TI_TEMPLATE (DECL_CONTEXT (expression)) + || (TMPL_ARGS_DEPTH (DECL_TI_ARGS (expression)) + > TMPL_ARGS_DEPTH (DECL_TI_ARGS + (DECL_CONTEXT (expression))))) + : (!CLASSTYPE_TI_TEMPLATE (DECL_CONTEXT (expression)) + || (TMPL_ARGS_DEPTH (DECL_TI_ARGS (expression)) + > TMPL_ARGS_DEPTH (CLASSTYPE_TI_ARGS + (DECL_CONTEXT (expression)))))))) && (any_dependent_template_arguments_p (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression))))) return true; -- Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo Be the change, be Free! FSF Latin America board member GNU Toolchain Engineer Free Software Evangelist Hay que enGNUrecerse, pero sin perder la terGNUra jamás-GNUChe