[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
jason at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Nov 21 06:34:00 GMT 2009
------- Comment #11 from jason at gcc dot gnu dot org 2009-11-21 06:34 -------
Subject: Bug 9050
Author: jason
Date: Sat Nov 21 06:33:56 2009
New Revision: 154403
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154403
Log:
PR c++/9050, DR 147, DR 318
* parser.c (cp_parser_lookup_name): If the name matches the explicit
class scope, we're naming the constructor.
(cp_parser_constructor_declarator_p): Just use cp_parser_unqualified_id
if we have a nested-name-specifier.
(cp_parser_direct_declarator): Handle getting an overload set as a
constructor declarator.
(cp_parser_unqualified_id): Avoid looking up the constructor when
naming the destructor.
(cp_parser_diagnose_invalid_type_name): Give good
diagnostic for improper use of constructor as template.
* typeck.c (finish_class_member_access_expr): Give good diagnostic
about calling constructor.
* error.c (dump_aggr_type): Don't print A::A for injected-class-name.
Added:
trunk/gcc/testsuite/g++.dg/template/ctor9.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/error.c
trunk/gcc/cp/parser.c
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/lookup/name-clash4.C
trunk/gcc/testsuite/g++.dg/tc1/dr147.C
trunk/gcc/testsuite/g++.old-deja/g++.jason/temporary5.C
trunk/gcc/testsuite/g++.old-deja/g++.pt/ctor2.C
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050
More information about the Gcc-bugs
mailing list