Struct D函数文字不能是类成员

Struct D函数文字不能是类成员,struct,d,mixins,Struct,D,Mixins,在玩D's mixins时,我遇到了这个难题 //////////////////////////////////////////////////////// // Proxy //////////////////////////////////////////////////////// //What I'm aiming for /* struct Proxy4(T) if (isNumeric!T) { T* x; T* y; T* z; T*

在玩D's mixins时,我遇到了这个难题

////////////////////////////////////////////////////////
//      Proxy
////////////////////////////////////////////////////////


//What I'm aiming for
/*
struct Proxy4(T) if (isNumeric!T)
{
    T* x;
    T* y;
    T* z;
    T* w;
}
*/
//Preferred implementation
struct Proxy(T, uint n) if (2<=n && n<=4 &&
                                     isNumeric!T)
{
    //Declare pointer fields
    mixin(iota(n).map!(i => ("T* "~"xyzw"[i]~";")).join());
}
上述代码打印: T*x;T*y;T*z;T*w

编辑:
我自己的答案不如Peter Alexander的答案,所以我把它删掉了。

事实上,问题似乎在于
类中的
mixin
表达式中存在lambda函数

这项工作:

mixin( iota(n).map!(q{"T " ~ "xyzw"[a] ~ ";"}).join() );
原始表达式在类之外也可以正常工作(例如,在
main()
中声明局部变量)。尝试在编译时运行代码没有问题,这只是一个奇怪的DMD前端实现限制

这个问题已经有文件了

mixin( iota(n).map!(q{"T " ~ "xyzw"[a] ~ ";"}).join() );