d可保证编译时执行下面吗?auto genFactorials(int n){ auto result = new int[n]; result[0] = 1; foreach (i; 1 .. n) { result[i] = result[i - 1] * i;
原创 2022-05-19 09:03:10
191阅读
d编译时扩展ctfe
原创 2022-09-11 19:48:39
84阅读
d不能用非常ctfe指针
原创 2022-06-18 23:37:51
41阅读
d的编译时两个阶段:ast与ctfe,ast为生成树,ctfe为编译时求值.其实很简单啦.ast树,必须通过语义给树加上意义,然后求值函数才能求值,对不对?不然,光是树,是没用的.其中,模板变函数,遇见了,先造一个ast的模板,然后实例化时,就填充这个ast,然后加入整个生成树里面.ctfe,在语义分析与代码生成阶段.编译时求值就是把一些编译时已知可以求值的东西,求出来,这样运行时就不必再求...
原创 2022-02-09 17:16:41
47阅读
d的编译时两个阶段:ast与ctfe,ast为生成树,ctfe为编译时求值.其实很简单啦.ast树,必须通过语义给树加上意义,然后求值函数才能求值,对不对?不然,光是树,是没用的.其中,模板变函数,遇见了,先造一个ast的模板,然后实例化时,就填充这个ast,然后加入整个生成树里面.ctfe,在语义分析与代码生成阶段.编译时求值就是把一些编译时已知可以求值的东西,求出来,这样运行时就不必再求...
原创 2021-08-19 17:39:20
97阅读
enum string[string] CtfeFoo = ["foo" : "bar"];static immutable string[string] Foo;static this(){ Foo = CtfeFoo;}string ctfeableFunction(){ if (__ctfe) return CtfeFoo["foo"]; e...
C
原创 2022-02-26 11:39:36
40阅读
//!dmd -betterC %//编译.创建了类的静态`缓冲区`.__gshared Foo[] foos = () { Foo[] ret; ret.length = 10; foreach(i, ref foo; ret) { foo = new Foo(i); }//用CTFE的全局数组初化,来绕过`新`,编译时运行的.
原创 2022-02-16 18:13:04
66阅读
stringImportPath.来指明导入串的路径.串必须是编译时,且不允许包含路径.void foo(){ //打印文件内容 writeln(import("foo.txt"));}必须有编译时已知代码,才能用ctfe.不能用文件系统代码,
原创 2021-08-20 09:36:49
56阅读