3

私はいくつかのコードを見直していて、次のような行に出くわしました:

std::tr1::function<bool (int, int)>(//etc...

テンプレート型の構文は、bool (int, int)私にはなじみがありませんでした。グーグルに基づいて、std::tr1::functionこの構文は関数の戻り値の型とパラメーターを定義するために使用されているようです。それは理にかなっていますが、なぜその構文が機能するのでしょうか? 私の知る限り、C++ テンプレートは型しか指定できませんか?

コード内の型のインスタンスを次のようにインスタンス化しようとしました:

bool (int, int) test;

予想どおり、ステートメントはコンパイルに失敗しました。少なくとも、構文は次のようにする必要があります。 bool (test)(int, int);

bool (int, int)C++ 型として扱われますか? これを私の心の中で調整するためのヒントはありますか?

ありがとう、アダム

4

1 に答える 1

2

関数型といいます。

そのインスタンスを作成することはできませんが、それらへのポインターと typedef を作成できます。

この質問にはいくつかの洞察があります:関数型は何に使用されますか?

于 2012-11-28T19:55:02.263 に答える