C ++のテンプレート型パラメータについて

私はここでいくつかの質問をブラウズしてきました。テンプレート化されたオブジェクトの型パラメータとして型voidとしてキャストされた整数を渡したサンプルコードが見つかりました。私が意味するものの例を次に示します。

SomeRandomObject Object;

もし誰かがコードの "void(int)"の部分とそれが何をしているのか説明できたら、私はそれを感謝します。

5

2 答え

そのタイプは " int をとり、 void "を返す関数です。

7
追加された
OK。お手伝いありがとう。
追加された 著者 user865927,

型は関数型です。今まではポインタ型でしか使用されていなかったので、あまり慣れていないかもしれません:

typedef int (ft)(void); //Huh?  (raw function type)
typedef ft *fp;         //???   (pointer to function)

typedef int (*fp_oldstyle)(void);//Ahh... (same as fp)

Functions themselves do have types, but since you cannot declare variables of that type or references to it, the only thing you would typically use are pointers, which are declared in the familiar syntax on the last line. For any function int foo(void);, both foo and &foo are interpreted as the pointer, so the "raw" function type ft isn't needed.

しかし、 std :: functionstd :: bind 、およびlambdaを取り巻く新しいテンプレートマジックでは、テンプレートパラメータで裸関数の型を見るのがはるかに一般的なことです。

2
追加された
関数参照を持つことは可能です。
追加された 著者 AraK,
私は同意する、私はまれにそれを見た。私の関連する質問: stackoverflow.com/questions/1516958/…
追加された 著者 AraK,
@アラク:ああ、それは本当です:ft&f = foo; f();ありがとう!しかし、あまり使われていないようです。私は、参照が再割り当てできないことを考慮していると思います。
追加された 著者 Kerrek SB,