diff options
author | Jason Merrill <jason@redhat.com> | 2021-08-30 09:44:28 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2021-08-30 17:23:28 -0400 |
commit | a8de832470f78a40a0e2c8de866a471bf74bf0ab (patch) | |
tree | b4c322aa99ae5649ec56af1b228c1304f2a2c68d /gcc/config.gcc | |
parent | a7083b83e45852540a4a09ee11b74dc28d777399 (diff) | |
download | gcc-a8de832470f78a40a0e2c8de866a471bf74bf0ab.zip gcc-a8de832470f78a40a0e2c8de866a471bf74bf0ab.tar.gz gcc-a8de832470f78a40a0e2c8de866a471bf74bf0ab.tar.bz2 |
c++: fold function template args sooner [PR101460]
As discussed in the PR, we were giving a lot of unnecessary errors for this
testcase because we didn't try to do constant evaluation until
convert_nontype_argument, which happens for each of the candidates. But
when looking at a template-id as the function operand of a call, we can try
to fold arguments before we get into overload resolution.
PR c++/101460
gcc/cp/ChangeLog:
* cp-tree.h (cxx_constant_value_sfinae): Declare.
* constexpr.c (cxx_constant_value_sfinae): New.
* pt.c (fold_targs_r, maybe_fold_fn_template_args): New.
(tsubst_copy_and_build) [CALL_EXPR]: Call
maybe_fold_fn_template_args.
gcc/testsuite/ChangeLog:
* g++.dg/template/explicit-args6.C: New test.
Diffstat (limited to 'gcc/config.gcc')
0 files changed, 0 insertions, 0 deletions