2
我知道void(*)(int)是一个函数指针。但是我真的很困惑void(int)。首先,他们是不同类型的void(int)和void(*)(int)有什么区别?
using A = void(int);
using B = void(*)(int);
is_same<A*, B>::value == true
我可以使用函数指针初始化B型的变量,但不是A
void func(int x){
cout<<x<<endl;
}
B b { func }; //ok
A a { func }; //error
A* ap { func }; //ok
但如果用作函数参数类型,他们似乎是可交换
void callA(A a, int arg){ a(arg); }
void callB(B b, int arg){ b(arg); }
callA(func, 1); //ok
callB(func, 1); //ok
那么什么是void(int)呢?什么时候应该使用void(int),何时应该使用void(*)(int)?