How does C++ handle function pointers in relation to functions with defaulted parameters?
If I have:
void foo(int i, float f = 0.0f);
void bar(int i, float f);
void (*func_ptr1)(int);
void (*func_ptr2)(int, float);
void (*func_ptr3)(int, float = 10.0f);
Which function pointers can I use in relation to which function?
Both foo()
and bar()
can only be assigned to func_ptr2
.
§8.3.6/2:
A default argument is not part of the type of a function. [Example:
int f(int = 0);
void h() {
int j = f(1);
int k = f(); // OK, means f(0)
}
int (*p1)(int) = &f;
int (*p2)() = &f; // error: type mismatch
--end example]
Default argument cannot be provided for pointers to functions.
来源:https://stackoverflow.com/questions/2576411/function-pointers-with-default-parameters-in-c