Указатели на функции с параметрами по умолчанию в C++
Как C++ обрабатывает указатели на функции с параметрами по умолчанию?
Если у меня есть:
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);
Какие указатели функций я могу использовать по отношению к какой функции?
2 ответа
И то и другое foo()
а также bar()
может быть назначен только func_ptr2
,
§8.3.6 / 2:
Аргумент по умолчанию не является частью типа функции. [Пример:
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
- конец примера]
Аргумент по умолчанию не может быть предоставлен для указателей на функции.