次のデータ型が定義されています: float、float4、float8、double、double4、int、int4、int8、long (64 ビット int)、および long4。次の関数が定義されていると仮定しましょう。
void foo_float() {
float f;
int i;
...do something with f and i
}
void foo_float4() {
float4 f;
int4 i;
...do something with f and i
}
void foo_double4() {
double4 f;
int4 i;
...do something with f and i
}
「f と i で何かをする」という部分は同じです。だから私は重複したコードを書きたくありません。代わりに次のようなことをしたいと思います:
<float, 4>foo()
これにより、次の関数が生成されます。
void foo() {
float4 f;
int4 i;
...do something with f and i
}
助言がありますか?テンプレートでこれを行うことはできますか? それとも、define ステートメントとテンプレートの組み合わせですか?