テンプレートパラメータ T が特定の型のときだけインスタンス化させたいテンプレート を書くときに static if を使うことができるが, もう少しシンプルな見た目の書き方 をすることもできる.
次のクラステンプレートは:
template A(T){
static if(is(T==int)){
void func(){
return 1;
}
}
}
次のように書き換えることができる.
temp_strict.d
1 2 3 4 5 6 7 8 9 10 | template A(T) if (is(T == int)){
int func(){
return 1;
}
}
void main(){
A!(int).func();
// A!(string).func(); // concept if が true になるテンプレートがないのでエラー
}
|