diff options
author | Jason Merrill <jason@redhat.com> | 2018-11-12 23:47:20 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2018-11-12 23:47:20 -0500 |
commit | 7d119905abdf28f56486be0ca01a42f8efcea1a2 (patch) | |
tree | ea8bf50fae9497d15cbee4407a37515b686e65af /gcc/ada/gcc-interface/misc.c | |
parent | 7c23c87c93f3eafa5c22d1f4f52711d97f3a4329 (diff) | |
download | gcc-7d119905abdf28f56486be0ca01a42f8efcea1a2.zip gcc-7d119905abdf28f56486be0ca01a42f8efcea1a2.tar.gz gcc-7d119905abdf28f56486be0ca01a42f8efcea1a2.tar.bz2 |
Avoid double substitution with complete explicit template arguments.
Previously, when we got a function template with explicit arguments for all
of the template parameters, we still did "deduction", which of course
couldn't deduce anything, but did other deduction-time checking of
non-dependent conversions and such. This broke down with the unevaluated
lambdas patch (to follow): substituting into the lambda multiple times, once
to get the function type for deduction and then again to generate the actual
decl, doesn't work, since different substitutions of a lambda produce
different types. I believe that skipping the initial substitution when we
have all the arguments is still conformant, and produces better diagnostics
for some testcases.
* pt.c (fn_type_unification): If we have a full set of explicit
arguments, go straight to substitution.
From-SVN: r266055
Diffstat (limited to 'gcc/ada/gcc-interface/misc.c')
0 files changed, 0 insertions, 0 deletions