From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32634 invoked by alias); 16 Feb 2007 15:04:45 -0000 Received: (qmail 32525 invoked by uid 48); 16 Feb 2007 15:04:24 -0000 Date: Fri, 16 Feb 2007 15:04:00 -0000 Message-ID: <20070216150423.32524.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/13088] templatizing outer class hides specialization of inner template class In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "twhitehe at uwo dot ca" 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 X-SW-Source: 2007-02/txt/msg01951.txt.bz2 ------- Comment #26 from twhitehe at uwo dot ca 2007-02-16 15:04 ------- There is actually two different bugs here. The original bug is a (rather convoluted) duplicate of 4882. It still remains unresolved as of gcc-4.1. The nested_deduction.zip source, which was submitted much later, demonstrated a different problems. Nested templates didn't match on template template specializations. A vastly simplified (over the nested_deductions code) example is: template struct A { template struct B { }; }; template struct C { }; template class c,typename t> struct C > { typedef int type; }; int main(void) { C >::type val0 = 0; C::B >::type val1 = 0; // Dies here return val0+val1; } With earlier versions of gcc, this would give the error Simplified.cpp:17: error: `type' is not a member of type `C::B >', with gcc 4.1 it now compiles fine. I appear, however, to not have the power to change the status of this report, so someone else will have to. -- twhitehe at uwo dot ca changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |twhitehe at uwo dot ca http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13088