From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5249 invoked by alias); 15 May 2003 11:00:11 -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 5228 invoked by uid 48); 15 May 2003 11:00:11 -0000 Date: Thu, 15 May 2003 11:00:00 -0000 Message-ID: <20030515110011.5227.qmail@sources.redhat.com> To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nathan@codesourcery.com, nobody@gcc.gnu.org From: giovannibajo@libero.it Reply-To: giovannibajo@libero.it, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nathan@codesourcery.com, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c++/3518: [2003-05-03] default conversion applied too soon X-SW-Source: 2003-05/txt/msg01783.txt.bz2 List-Id: Old Synopsis: [2003-01-02] default conversion applied too soon New Synopsis: [2003-05-03] default conversion applied too soon State-Changed-From-To: analyzed->feedback State-Changed-By: bajo State-Changed-When: Thu May 15 11:00:10 2003 State-Changed-Why: Nathan, I see what you are saying but I think the code is still legal. The applicable ctor is attempting to create a const qualified _reference_ to function type, which is a valid type. In fact, other compilers like Comeau/EDG instanciate the constructor with [T = void(void)]. GCC compiles the code, but applies the default conversion too soon, so instanciates the template with [T = (void)(*)(void)] which is wrong. If you agree, we can rework a code snippet which fails if T is a function pointer so that we can properly detect the bug. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=3518