From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13675 invoked by alias); 13 Sep 2002 07:46:02 -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 13651 invoked by uid 71); 13 Sep 2002 07:46:01 -0000 Resent-Date: 13 Sep 2002 07:46:01 -0000 Resent-Message-ID: <20020913074601.13649.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, loose@astron.nl Received: (qmail 12082 invoked by uid 61); 13 Sep 2002 07:40:16 -0000 Message-Id: <20020913074016.12081.qmail@sources.redhat.com> Date: Fri, 13 Sep 2002 00:46:00 -0000 From: loose@astron.nl Reply-To: loose@astron.nl To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/7906: Templated class with nested non-templated class having an operator() fails to compile X-SW-Source: 2002-09/txt/msg00218.txt.bz2 List-Id: >Number: 7906 >Category: c++ >Synopsis: Templated class with nested non-templated class having an operator() fails to compile >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Fri Sep 13 00:46:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Marcel Loose >Release: g++ (GCC) 3.2 >Organization: >Environment: Linux master 2.4.19 #1 SMP Mon Aug 12 15:33:48 CEST 2002 i686 unknown >Description: The code in "How-To-Repeat" is legal, to the best of my knowledge. However, it fails to compile with the following error: tTemplate.cc:19: no `Templated::NonTemplated::operator std::vector >::size_type() const' member function declared in class `Templated::NonTemplated' tTemplate.cc:19: template definition of non-template ` Templated::NonTemplated::operator std::vector >::size_type() const' >How-To-Repeat: #include template class Templated { private: typedef std::vector buf_t; class NonTemplated { public: operator typename buf_t::size_type() const; private: typename buf_t::size_type myIndex; }; }; template Templated::NonTemplated::operator typename Templated::buf_t::size_type() const { return myIndex; } int main() { Templated tmpl; return 0; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: