-
- Downloads
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.
Showing
- gcc/cp/cp-tree.h 1 addition, 0 deletionsgcc/cp/cp-tree.h
- gcc/cp/decl.cc 57 additions, 1 deletiongcc/cp/decl.cc
- gcc/cp/pt.cc 4 additions, 27 deletionsgcc/cp/pt.cc
- gcc/testsuite/g++.dg/cpp0x/vt-34314.C 6 additions, 6 deletionsgcc/testsuite/g++.dg/cpp0x/vt-34314.C
- gcc/testsuite/g++.dg/template/defarg23.C 21 additions, 0 deletionsgcc/testsuite/g++.dg/template/defarg23.C
- gcc/testsuite/g++.dg/template/defarg23a.C 24 additions, 0 deletionsgcc/testsuite/g++.dg/template/defarg23a.C
- gcc/testsuite/g++.dg/template/pr92440.C 2 additions, 2 deletionsgcc/testsuite/g++.dg/template/pr92440.C
- gcc/testsuite/g++.old-deja/g++.pt/redecl1.C 6 additions, 6 deletionsgcc/testsuite/g++.old-deja/g++.pt/redecl1.C
Loading
Please register or sign in to comment