On Tue, Feb 05, 2008 at 11:20:01PM -0300, Horst H. von Brand wrote:
Note that the f() function can be called with one argument, and that
is
what the template use tries to do; g++ complains:
$ g++ -O2 -c tst.cc
tst.cc: In function ‘void ff(int, T) [with T = void (*)(int, int)]’:
tst.cc:13: instantiated from here
tst.cc:4: error: too few arguments to function
I'm no C++ expert at all, so both the "how it used to work" and the
current
behavior sound reasonable. Can somebody shed some light? Should this be
documented as a GCC change, or is it a bug?
I believe the testcase is invalid, see
http://gcc.gnu.org/ml/gcc-patches/2007-07/msg01645.html
Default arguments are a property of a function declaration, not function
type and as such shouldn't be part of a deduced type, or typeof/decltype.
Jakub