From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22346 invoked by alias); 17 May 2007 12:27:50 -0000 Received: (qmail 22277 invoked by uid 48); 17 May 2007 12:27:31 -0000 Date: Thu, 17 May 2007 12:27:00 -0000 Message-ID: <20070517122731.22276.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/30822] wrong choice of overloaded template functions in recursive call In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "Zarathustra at gentlemansclub dot de" 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-05/txt/msg01282.txt.bz2 ------- Comment #7 from Zarathustra at gentlemansclub dot de 2007-05-17 13:27 ------- According to my current understanding, the compiler is right not to accept the given example code: Name resolution at the point of instantiation does only work for dependent names. Given a expression which looks like "postfix-expression ( expression-listopt )" "postfix-expression" is a dependent name if (and only if) some thing in "expression-listopt" depends on a template parameter and "postfix-expression" is an identifier. This holds for foo(...) but it does not hold for foo<...>(...) or ::foo(...). Therefore I assume the compiler behaves correctly. This is probably another case where the C++ standard is somehow counterintuitive. -- Zarathustra at gentlemansclub dot de changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30822