У меня есть функция, которая принимает в качестве аргумента указатель на функцию. Удивительно, но я могу передать как указатель функции, так и обычную функцию:
#include <iostream>
#include <functional>
int triple(int a) {
return 3*a;
}
int apply(int (*f)(int), int n) {
return f(n);
}
int main() {
std::cout << apply(triple, 7) << "\n";
std::cout << apply(&triple, 7) << "\n";
}
Я не понимаю, почему это работает. Есть ли неявное преобразование из функций в указатели на функции?