This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/15339] function call error
- From: "llewelly at xmission dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 May 2004 16:36:27 -0000
- Subject: [Bug c++/15339] function call error
- References: <20040507150259.15339.MichaelLi8195@hotmail.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From llewelly at xmission dot com 2004-05-07 16:36 -------
Subject: Re: function call error
"bangerth at dealii dot org" <gcc-bugzilla@gcc.gnu.org> writes:
> ------- Additional Comments From bangerth at dealii dot org 2004-05-07 15:30 -------
> Confirmed, here is a smaller testcase:
> -----------
> template<typename> void fun(int);
> template<typename> void fun(int = 0) {}
>
> int main()
> { fun(); }
> -----------
>
> g/x> /home/bangerth/bin/gcc-3.4-pre/bin/c++ -c x.cc
> x.cc: In function `int main()':
> x.cc:10: error: no matching function for call to `fun()'
>
> However, we get this from icc:
> g/x> icc -Xc -ansi x.cc
> x.cc(2): warning #845: specifying a default argument when redeclaring an
> unreferenced function template is nonstandard
> template<typename> void fun(int = 0) {}
> ^
>
> x.cc(5): error: no instance of function template "fun" matches the argument
> list
> { fun(); }
> ^
>
> compilation aborted for x.cc (code 2)
>
>
> So it seems that this is wrong code. Someone will have to look up the exact
> text in the standard though. I find it odd that this only applies to
> templates, not to non-template functions.
It's in 8.3.6/4 . But see issue 226:
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html#226
Basicly, it's a leftover from when there was no way to explicitly
specifiy template arguments for function templates.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15339