[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050 Jackie Rosen changed: What|Removed |Added CC||jackie.rosen at hushmail dot com --- Comment #17 from Jackie Rosen --- *** Bug 260998 has been marked as a duplicate of this bug. *** Seen from the domain http://volichat.com Page where seen: http://volichat.com/adult-chat-rooms Marked for reference. Resolved as fixed @bugzilla.
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050 --- Comment #16 from Johannes Schaub 2012-04-02 07:43:23 UTC --- (In reply to comment #15) > (In reply to comment #14) > > Good point, I've pointed out the problem with the proposed resolution. Note that we currently have http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#581 open. Even when 12.1 would have allowed both the injected class name and it followed by template-arguments, the name lookup rules would never allow it to match the second condition because the injected class name would always have been translated to a name denoting the constructor instead of the class. So ultimately, 12.1 allowing the injected class name followed by template arguments could only be used in an unqualified-id constructor declaration in C++03.
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050 Jason Merrill changed: What|Removed |Added Known to fail|| --- Comment #15 from Jason Merrill 2012-04-02 05:41:08 UTC --- (In reply to comment #14) Good point, I've pointed out the problem with the proposed resolution.
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050 --- Comment #14 from Johannes Schaub 2012-04-01 14:14:46 UTC --- (In reply to comment #13) > Jason, does http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1435 > not render the explicit specialization ill-formed for C++11TC1? It only allows > a simple identifier, and not a template-id. FWIW I don't like the resolution of that issue. For a qualified-id, the injected-class-name is an excellent way for us to know when and when not we name a constructor, and it is entirely based on name-lookup rules; I don't see the need to dictate that in clause 12. Only for an unqualified-id, we actually need the rule to know when we declare a constructor. The allowed decl-specifiers in a constructor declaration can be stated separately.
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050 Johannes Schaub changed: What|Removed |Added CC||schaub.johannes at ||googlemail dot com --- Comment #13 from Johannes Schaub 2012-04-01 14:03:40 UTC --- Jason, does http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1435 not render the explicit specialization ill-formed for C++11TC1? It only allows a simple identifier, and not a template-id.
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
--- Comment #12 from jason at gcc dot gnu dot org 2009-11-21 06:34 --- Fixed for 4.5. -- jason at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
--- 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
[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates
-- jason at gcc dot gnu dot org changed: What|Removed |Added Summary|Can't explicitly specialize |[DR 147] Can't explicitly |C++ constructor templates |specialize C++ constructor ||templates Target Milestone|--- |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050