D编译时变量同构数组

D编译时变量同构数组,d,compile-time,D,Compile Time,D2.056 为什么这不起作用?它抱怨“name”在编译时不可读,但这是一个错误的声明。“names”的内容在编译时是已知的,因为它是{“a”,“b”} 我正在尝试与库进行绑定,传递的函数名必须定义并指向库。函数必须对编译和编译时执行都有效。显然,f是不可编译的 根据您试图实现的目标,您可以将names设置为模板参数(这将使foreach静态),也可以将f构建一个字符串并在f的调用站点混合结果。使用模板化版本,我如何确保,传递的元组确实是同构的,并且是与字符串兼容的类型?因为转换为模板版本时,该

D2.056

为什么这不起作用?它抱怨“name”在编译时不可读,但这是一个错误的声明。“names”的内容在编译时是已知的,因为它是{“a”,“b”}


我正在尝试与库进行绑定,传递的函数名必须定义并指向库。

函数必须对编译和编译时执行都有效。显然,
f
是不可编译的


根据您试图实现的目标,您可以将
names
设置为模板参数(这将使
foreach
静态),也可以将
f
构建一个字符串并在
f
的调用站点混合结果。

使用模板化版本,我如何确保,传递的元组确实是同构的,并且是与字符串兼容的类型?因为转换为模板版本时,该检查丢失。
void f(string[] names...)
{
    foreach (name; names)
    {
        mixin("string " ~ name ~ " = name;");
    }
}

int main()
{
    f("a", "b");
    return 0;
}