From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13185 invoked by alias); 16 Nov 2002 01: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 13171 invoked by uid 71); 16 Nov 2002 01:56:00 -0000 Date: Thu, 21 Nov 2002 18:51:00 -0000 Message-ID: <20021116015600.13170.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Wolfgang Bangerth Subject: Re: c++/4205: function template can call other function with incorrect parameters Reply-To: Wolfgang Bangerth X-SW-Source: 2002-11/txt/msg00810.txt.bz2 List-Id: The following reply was made to PR c++/4205; it has been noted by GNATS. From: Wolfgang Bangerth To: gcc-bugs@gcc.gnu.org, , , Cc: Subject: Re: c++/4205: function template can call other function with incorrect parameters Date: Fri, 15 Nov 2002 19:55:02 -0600 (CST) This code compiles silently: ------------------------------------- template void quirk(F f) { (*f) (1); } void foo(int i, int j = 5){} void bar(int i, int j) {} int main() { quirk(&foo); quirk(&bar); } ------------------------------------- The assertion of the submitter is that the first quirk(&foo) is ok, since the call to (*f)(1) will substitute the second arg of foo by the default argument of that function. The second call would be wrong. It succeeds, of course, since the function quirk for exactly this template arg has already been compiled, and no re-compilation means no re-check. However, I believe that already the first one is bogus. The template argument F of quirk is void (*) (int, int), so the call to (*p)(1) should be invalid. We should not know about default arguments in quirk, right? I'm surprised that default arguments are propagated to the template function. They don't appear in the type of quirk as well, since if I enter a std::cout << __PRETTY_FUNCTION__ << std::endl; into that function, I only get void quirk(F) [with F = void (*)(int, int)] But that may of course have other roots. Regards Wolfgang ------------------------------------------------------------------------- Wolfgang Bangerth email: bangerth@ticam.utexas.edu www: http://www.ticam.utexas.edu/~bangerth