私はvoid(*)(int)が関数ポインタであることを知っています。しかし、私は本当にvoid(int)を混同しています。まず、彼らはさまざまな種類void(int)とvoid(*)(int)の違いは何ですか?
using A = void(int);
using B = void(*)(int);
is_same<A*, B>::value == true
している私は、関数ポインタを使用して、タイプBの変数を初期化ではなく
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)はいつ使うべきですか?