public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org,
Subject: Re: c++/4205: function template can call other function with incorrect parameters
Date: Thu, 21 Nov 2002 18:51:00 -0000	[thread overview]
Message-ID: <20021116015600.13170.qmail@sources.redhat.com> (raw)

The following reply was made to PR c++/4205; it has been noted by GNATS.

From: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
To: gcc-bugs@gcc.gnu.org, <gcc-gnats@gcc.gnu.org>, <nathan@codesourcery.com>,
   <gdr@codesourcery.com>
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<typename F> 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
 
 


             reply	other threads:[~2002-11-16  1:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-21 18:51 Wolfgang Bangerth [this message]
  -- strict thread matches above, loose matches on Subject: below --
2001-09-04  8:20 nathan
2001-09-02 10:16 Jens.Maurer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021116015600.13170.qmail@sources.redhat.com \
    --to=bangerth@ticam.utexas.edu \
    --cc=gcc-prs@gcc.gnu.org \
    --cc=nobody@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).