https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101460
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>: https://gcc.gnu.org/g:a8de832470f78a40a0e2c8de866a471bf74bf0ab commit r12-3234-ga8de832470f78a40a0e2c8de866a471bf74bf0ab Author: Jason Merrill <ja...@redhat.com> Date: Mon Aug 30 09:44:28 2021 -0400 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.