From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11451 invoked by alias); 19 Mar 2003 12:56:01 -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 11424 invoked by uid 71); 19 Mar 2003 12:56:00 -0000 Date: Wed, 19 Mar 2003 12:56:00 -0000 Message-ID: <20030319125600.11409.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Richard Guenther Subject: Re: c++/10146: [3.4 regression] [new parser] template function lookup failure(s) Reply-To: Richard Guenther X-SW-Source: 2003-03/txt/msg01265.txt.bz2 List-Id: The following reply was made to PR c++/10146; it has been noted by GNATS. From: Richard Guenther To: Gabriel Dos Reis Cc: Giovanni Bajo , , Subject: Re: c++/10146: [3.4 regression] [new parser] template function lookup failure(s) Date: Wed, 19 Mar 2003 13:47:40 +0100 (CET) On 19 Mar 2003, Gabriel Dos Reis wrote: > Richard Guenther writes: > > | On 19 Mar 2003, Gabriel Dos Reis wrote: > | > | > Richard Guenther writes: > | > > | > | On Wed, 19 Mar 2003, Giovanni Bajo wrote: > | > | > | > | > > | > | > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p > | > | > r=10146 > | > | > > | > | > To sum it up: > | > | > > | > | > >Foo().template foo(u); // does not work > | > | > >Foo().template bar(u); // does not work > | > | > > | > | > These should compile. > | > | > > | > | > >Foo().foo(u); // does work ?? > | > | > >Foo::foo(u); // does work ?? > | > | > >Foo().bar(u); // does work ?? > | > | > > | > | > Yes, because the template parameter of the template member function is > | > | > deduced from the call. What's wrong with them? > | > | > | > | I think foo() and bar() needs to be qualified with the template keyword > | > | due to two-stage namelookup. But I may be wrong (dont have a standard > | > | to look at). > | > > | > Two-phase name lookup has nothing to do here. The Foo part is > | > -not- dependent, therefore there need not be any extra "template" > | > qualifier. > | > | Ah, ok - only for Foo:: it would be dependent, yes? > > Yes. (Any dependent expression would do also). If I exchange Foo with Foo only Foo().foo(u); and Foo().bar(u); do not work (as expected), but f.i. Foo::foo(u); (while Foo::foo(u) is rejected) is ok? Well, I'll leave it now up to Mark to check&fix all relevant cases after 3.3 is out. Richard. -- Richard Guenther WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/