diff options
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r-- | gcc/cp/pt.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index da57fb2..209e65f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5661,6 +5661,28 @@ instantiate_non_dependent_expr (tree expr) return instantiate_non_dependent_expr_sfinae (expr, tf_error); } +/* Like instantiate_non_dependent_expr, but return NULL_TREE rather than + an uninstantiated expression. */ + +tree +instantiate_non_dependent_or_null (tree expr) +{ + if (expr == NULL_TREE) + return NULL_TREE; + if (processing_template_decl) + { + if (instantiation_dependent_expression_p (expr) + || !potential_constant_expression (expr)) + expr = NULL_TREE; + else + { + processing_template_decl_sentinel s; + expr = instantiate_non_dependent_expr_internal (expr, tf_error); + } + } + return expr; +} + /* True iff T is a specialization of a variable template. */ bool |