【发布时间】:2015-09-06 06:02:19
【问题描述】:
typeof 在处理复杂表达式时的效率如何?
具体来说,分两种情况:
完全由需要没有 CTFE 评估的常量部分组成的复杂表达式
需要
mixin()CTFE 字符串的复杂表达式。
我不知道这是否根本不同,但这是我关心的两种情况。
【问题讨论】:
-
如果结果是一个结构,它在编译时被评估。我不确定如果涉及类和多态性会发生什么。我猜它要么在编译时进行评估,要么在有歧义的情况下归结为 d-runtime 中的简单查找。简而言之,它很有效。
-
@Tamas :无论多态性情况如何,我相信这都是 CT(它只返回最低的基类)。 RT 多态性使用
typeid代替。我关心的是 typeof 如何处理可能需要 CTFE 或依赖其他多路径编译时反射算法的表达式(例如使用__traits)。 仍然是 CT 操作,但我想知道在编译时这样做的效率如何。 -
typeof不评估它的论点;除非表达式使用使用它们的模板,否则不会有任何 CTFE 或 mixin 语句需要计算。