C++のテンプレートはパラメータとして関数をとることができる。
/**
* 3倍する
*/
int treble(int x)
{
return x * 3;
}
/**
* 4倍する
*/
int quadruplicate(int x)
{
return x * 4;
}
/**
* 引数を計算式で計算する
* @param function int型の引数をとりint型を返す関数
* @param a 計算する値
* @return 計算結果
*/
template<int function(int)>
int calc(int a)
{
return function(a);
}
//2を3倍する
int num1 = calc<treble>(2);
//3を4倍する
int num2 = calc<quadruplicate>(3);