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
next 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: linkBe 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).