原文 对:
//main.d
import std;
void main()
{
enum x = iota(1, 5).reduce!"a * b";
x.writeln();
}
通过类似:
dmd --expand-ctfe main.d -o expanded.d
cat expanded.d
得到:
//expanded.d
import std;
void main()
{
24.writeln();
}
可试试-vcg-ast
标志:
import object;
import std;
void main()
{
enum int x = 24;
writeln(24);
return 0;
}
// 一堆模板实例
或者这样:
template printEnum(alias x, string file = __FILE__, size_t line = __LINE__)
{
enum printEnum = x;
pragma(msg, file, "(", int(line), "): ", printEnum);//打印.
}
enum x = printEnum!(iota(1, 5).reduce!"a * b");
可这样:
debug template printEnum(...) {
... // 上面内容仅用于调试时.
}//加上-debug标志.
else
enum printEnum(alias x) = x;
参考 大内存,用64位
编译:
dmd -m64 -run test.d