From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26781 invoked by alias); 18 Nov 2013 13:34:05 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 26765 invoked by uid 48); 18 Nov 2013 13:34:01 -0000 From: "jhs at edg dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/59173] New: Alias template in partial specialization finds name from primary template Date: Mon, 18 Nov 2013 13:34:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: unknown X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: jhs at edg dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-11/txt/msg01647.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59173 Bug ID: 59173 Summary: Alias template in partial specialization finds name from primary template Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jhs at edg dot com In code such as the following, which is present in the and headers, the type in the alias template definition finds the rebind from the primary template. The correct behavior is to give an error because "rebind<_Up>" should be preceded by the "template" keyword for syntactic disambiguation. This is also a defect in those two headers as the template keyword should be added there. template struct pointer_traits { template struct rebind {}; }; template struct P {}; template struct pointer_traits > { template using rebind = P::rebind<_Up>>; };