関数ポインターのこのような構文を見るのに慣れています
int (*pointer_name) (float, char *);
void call_function (void (*)(int), int);
一部の C++03 機能ライブラリでは、型が次のように使用されているのを目にします。
abc::function<void(*)(int,float)> f;
C++11 ではstd::function
、このように指定された型が表示されます
std::function<void(int,float)> f;
欠けがあり(*)
ます。なんで?
C++03function<T>
はT
、対応する関数ポインタと同じ型になっています。実装を想像するのは簡単です。
std::function
in C++11 は、コア言語の拡張機能によってサポートされています。呼び出し可能性に対応するために、テンプレート引数の型が拡張されていますか?