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

Reply via email to