void (*) (int)가 함수 포인터임을 알고 있습니다. 그러나 나는 void (int)를 혼동합니다. 첫째, 그들은 서로 다른 유형의 I는 함수 포인터를 사용하여 B 형의 변수를 초기화 할 수 있습니다 void (int)와 void (*) (int)의 차이점은 무엇입니까?
using A = void(int);
using B = void(*)(int);
is_same<A*, B>::value == true
하지만이있어
void func(int x){
cout<<x<<endl;
}
B b { func }; //ok
A a { func }; //error
A* ap { func }; //ok
그러나 함수 매개 변수 유형으로 사용하는 경우, 그들은 exchangable 것 같다
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)는 사용해야합니까?