From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13301 invoked by alias); 22 Jan 2003 23:06:00 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 13280 invoked by uid 71); 22 Jan 2003 23:06:00 -0000 Resent-Date: 22 Jan 2003 23:06:00 -0000 Resent-Message-ID: <20030122230600.13278.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, andrew@andypo.net Received: (qmail 13119 invoked by uid 48); 22 Jan 2003 23:04:36 -0000 Message-Id: <20030122230436.13118.qmail@sources.redhat.com> Date: Wed, 22 Jan 2003 23:06:00 -0000 From: andrew@andypo.net Reply-To: andrew@andypo.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/9410: [3.4 regression] inability to access a base classes' member from a templated derived class X-SW-Source: 2003-01/txt/msg01273.txt.bz2 List-Id: >Number: 9410 >Category: c++ >Synopsis: [3.4 regression] inability to access a base classes' member from a templated derived class >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Wed Jan 22 23:06:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Andrew Pollard >Release: gcc-3.4-20030122 >Organization: >Environment: i686-pc-linux-gnu on RedHat8.0/PIII >Description: The following snippet of code no longer compiles. I'm fairly certain it should compile (but I'm not a language laywer). Previous versions of gcc compile it (including gcc-3.4-20030116) hidden.cxx: ----------- struct A { int a; }; template struct B : public A { }; template struct C : public B { int foo() { return (a); } int bar() { return (this->a); } }; ---------- % g++34 hidden.cxx -c hidden.cxx: In member function `int C::foo()': hidden.cxx:11: error: `a' has not been declared Note how the use with (this->a) works. From a language point of view I would have expected both to work or both to fail. Is this a bug, or just another inability of mine to understand the complexity of templates in C++? >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: