考虑以下代码:
static if (!is(MyStruct))
{
struct MyStruct
{
}
}
static if (is(MyStruct))
{
static assert(0);
}
我最初的理解是声明的顺序(在全局范围内)在 D中并不重要。
但是,在这种情况下,static if
s 的顺序决定了程序是否编译。
因此,D 的编译时评估阶段是过程特性(如 C/C++)、声明特性还是其他?目前是什么,计划是什么(如果两者不同)?
编辑:
我才意识到,问题还不止于此。static if
使用.tupleof
枚举当前模块的成员并创建相同类型的问题会发生什么?