テンプレート制約 (concept if)

テンプレートパラメータ 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 になるテンプレートがないのでエラー
}

Previous topic

条件コンパイル

Next topic

マルチスレッドプログラミング