[ create a new paste ] login | about

Link: http://codepad.org/nNNIMB9q    [ raw code | output | fork ]

C++, pasted on Feb 27:
// --------------------------------
// 関数の"型"の話
// --------------------------------

//↓ 引数として何かの関数を受け取るテンプレート
template<typename F>
void foo(F f)
{
	printf("%d\n", f());
}

//↓「戻り値としてint型を持ち、引数がvoidされた関数」と言う型を持つ関数
int bar()
{
	return 5963;
}

int main()
{
	//↓「戻り値としてint型を持ち、引数がvoidされた関数」を型に指定されたテンプレート関数に
	//↓その型に該当する関数を渡している 
	foo<int (*)(void)>(bar);


	//↓typedefは「そのフォーマットの中でプログラマが任意に付けた名前(変数名など)を
	//↓新たな型とみなす様にコンパイラに指示する物なので‥‥
	typedef int (*hoge)(void);

	//↓当然これでもおk
	foo<hoge>(bar);

	return 0;
}


Output:
1
2
5963
5963


Create a new paste based on this one


Comments: