コンパイル時関数実行 (CTFE)

いくつかの制約の下, 関数をコンパイル時に実行することができる.

この関数はテンプレート関数である必要がない.

ctef.d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import std.stdio;

uint factorial(uint i){
  if(i == 0)
    return 1;
  else
    return i * factorial(i-1);
}

void main(){
  int[factorial(4)] v;
/*
  コンパイル時定数が必要な場所で関数が実行されているとコンパイル時に実行される.
*/
  
  v[0] = 0;
  v[23] = 23;
  
  writeln(v.length);
  writeln(v[0], " --> ", v[23]);
}

ctef.d の実行結果は:

[cactus:~/code_d/d_tuts]% ./ctef
120
0 --> 23

Previous topic

文字列ミックスイン

Next topic

条件コンパイル