c++ - Function default parameters are ignored -
for simplified piece of code i'm getting following error:
error: few arguments function std::cout << f();
int g(int = 2, int b = 1) { return + b; } template<class func> void generic(func f) { std::cout << f(); } int main() { generic(g); }
i cannot clue reason why default parameters of function f
not passing function generic
. behaves f
doesn't have default parameters ...
what's wrong there?
how forward default parameters correctly?
g
may have default arguments, type of &g
still int(*)(int, int)
, not type can called no arguments. within generic
, can't differentiate - we've lost context default arguments.
you can wrap g
in lambda preserve context:
generic([]{ return g(); });
Comments
Post a Comment