]> gcc.gnu.org Git - gcc.git/commit
c++: merge default targs for function templates [PR65396]
authorPatrick Palka <ppalka@redhat.com>
Wed, 9 Mar 2022 13:42:19 +0000 (08:42 -0500)
committerPatrick Palka <ppalka@redhat.com>
Wed, 9 Mar 2022 13:42:19 +0000 (08:42 -0500)
commitfe548eb8436f3906e6a3c6e3e8707d24e60ec0fa
treed155334d863e95a715b555679753ac37c91d8f04
parent4470e813b0b46d2e579b9e3d69a41a7192709c50
c++: merge default targs for function templates [PR65396]

We currently merge default template arguments for class templates, but
not for function templates.  This patch fixes this by factoring out the
argument merging logic in redeclare_class_template into a separate
function and using it in duplicate_decls as well.

PR c++/65396

gcc/cp/ChangeLog:

* cp-tree.h (merge_default_template_args): Declare.
* decl.cc (merge_default_template_args): Define, factored out
from redeclare_class_template.
(duplicate_decls): Use it when merging member function template
and free function declarations.
* pt.cc (redeclare_class_template): Factor out default argument
merging logic into merge_default_template_args.  Improve location
of a note when there's a template parameter kind mismatch.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/vt-34314.C: Adjust expected location of
"redeclared here" note.
* g++.dg/template/pr92440.C: Likewise.
* g++.old-deja/g++.pt/redecl1.C: Adjust expected location of
"redefinition of default argument" error.
* g++.dg/template/defarg23.C: New test.
* g++.dg/template/defarg23a.C: New test.
gcc/cp/cp-tree.h
gcc/cp/decl.cc
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp0x/vt-34314.C
gcc/testsuite/g++.dg/template/defarg23.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/defarg23a.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/pr92440.C
gcc/testsuite/g++.old-deja/g++.pt/redecl1.C
This page took 0.064801 seconds and 6 git commands to generate.