[Bug c++/96330] Constexpr variables cannot be used in the template context.
ppalka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 5 16:43:45 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96330
--- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #1)
> Tried
> --- gcc/cp/pt.c.jj 2020-07-27 10:38:19.000000000 +0200
> +++ gcc/cp/pt.c 2020-07-27 17:25:09.748240198 +0200
> @@ -16838,14 +16838,17 @@ tsubst_copy (tree t, tree args, tsubst_f
> case TEMPLATE_ID_EXPR:
> {
> /* Substituted template arguments */
> - tree fn = TREE_OPERAND (t, 0);
> + tree expr = TREE_OPERAND (t, 0);
> tree targs = TREE_OPERAND (t, 1);
>
> - fn = tsubst_copy (fn, args, complain, in_decl);
> + expr = tsubst_copy (expr, args, complain, in_decl);
> if (targs)
> targs = tsubst_template_args (targs, args, complain, in_decl);
>
> - return lookup_template_function (fn, targs);
> + if (variable_template_p (expr))
> + return lookup_and_finish_template_variable (expr, targs, complain);
> + else
> + return lookup_template_function (expr, targs);
> }
>
> case TREE_LIST:
> but that just means an ICE elsewhere.
Hmm, seems using lookup_template_variable instead of
lookup_and_finish_template_variable works.
More information about the Gcc-bugs
mailing list