问题标签 [ctfe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
252 浏览

glsl - D CTFE 和 GPU 代码生成

D 的 Mixins 是否可以用于将线性代数运算映射到CPU代码和 OpenCL 或 GPU 顶点着色器函数(如 GLSL)?这将是 D 的真正杀手级应用程序,以及针对 CPU 和 GPU 执行的更好的桥接逻辑。将此与glm和 D 的gl3n进行比较,后者仅将固定大小的线性代数编译为 CPU 代码。

VexCL是使用 OpenCL 和 C++11(GCC 4.6 或更高版本)的概念证明,它完全抽象出与 C++ AMP 有点相似的内存分配和代码执行的后端相关(CPU/GPU)实现细节。所以事情只能在 D 中变得更好,对吗?mixins 能否完全替代 VexCL 中使用的 C++ 表达式模板?这是一个很好的使用教程。

CTFE 也可能在此讨论中发挥作用。

0 投票
2 回答
209 浏览

arrays - 在编译时加入字符串

我想在编译时加入文件名和图像格式。以下示例不起作用,因为string[]我想在编译时无法评估...

它失败并显示错误消息:

我需要将其最终输入import(). 如何解决错误?

0 投票
3 回答
466 浏览

c++ - C++ 是否允许 CTFE?

测试了一个简单的 utf8 strlen 函数,很惊讶trunk clang 完全消除了它(gcc 没有):

clang++ -O3 -S -fverbose-asm:

这就像 D 的编译时函数评估。这在 C++ 中是否合法?

我的意思是说,他们一开始就发明了那个糟糕的constexpr肯定是有原因的。据我所知,它甚至不能在这里使用,因为它受到严格限制。

0 投票
1 回答
107 浏览

struct - 使用 CTFE 生成结构别名集

说我有课

用这些速记表示一个固定维度的向量

我可以以某种方式使用 D 的功能在编译时生成这些别名吗?

还是只是为了评估功能?

/每

0 投票
1 回答
173 浏览

d - D 编译时的任意代码

我听说 D 可以在编译时执行任意用户代码。这是真的?有人可以举个例子(特别是当编译永远不会终止时)?这个功能是干什么用的?另外,如果是这样的话,有没有办法用一些编译器选项来禁用它(编译器是 dmd)?

0 投票
1 回答
237 浏览

regex - 在 D 中编译时评估正则表达式

有没有办法在编译时评估 D 中的正则表达式?

0 投票
1 回答
53 浏览

attributes - UDA opCall __traits

此代码在 getA!B() 调用的第二个单元测试中失败。错误是:“对于'string'类型的'value'需要'this'”

问题是。无论 UDA 是类型还是 opCall,如何让 getA 始终返回 A?

0 投票
1 回答
194 浏览

d - D 特征 - 完整数据成员列表

我正在尝试使用以下代码从类中获取完整数据成员的列表:

但是,编译失败并出现以下错误:

如何使此代码编译?

0 投票
1 回答
216 浏览

d - 使用 D 切片的 memset() 和 memcpy()

在 D 语言中,假设代码的以下语句的等价物是什么:-

我在想转换是:-

但这似乎对我不起作用,因为 dmd(v2.066.1) 给出了错误slice [8..7] exceeds array bounds [0..8]

0 投票
1 回答
100 浏览

metaprogramming - 模式匹配基准测试:D 中的编译时查找与运行时查找

我需要关于我的第一个 D 项目的建议。我已将其上传到:-

https://bitbucket.org/mrjohns/matcher/downloads

IDEA:对 3 种运行时算法进行基准测试,并将它们与它们的编译时变体进行比较。它们之间的唯一区别是,对于编译时,查找表(即数组 bmBc、bmGs 和后缀)必须在编译时计算(我目前依赖 CTFE)。而对于运行时,查找表是在运行时计算的。

注意:模式匹配算法本身不需要在编译时执行,只需要查找表。话虽如此,在已知(编译时计算)表上运行的算法必须比必须在运行时计算它们的算法更快.

我的结果似乎有所不同,只有第一对(BM_Runtime 和 BM_Compile-time)产生了可接受的结果,另外两对为编译时变体提供了更长的执行时间。我认为这里缺少一些东西。请帮忙。

模式=“GCAGAGAG”的当前结果如下:-

运行代码:dmd -J。matcher.d inputs.d rtime_pre.d ctime_pre.d && numactl --physcpubind=0 ./matcher

我会很感激你的建议。

谢谢你的建议。