使用模板初始化结构

时间:2014-03-04 21:34:45

标签: templates syntax struct d

使用模板初始化结构的正确方法是什么?

这似乎不起作用:

struct Point3(T) if(isNumeric!T) {
        T x;
        T y;
        T z;
}

enum Blocksize = Point3!ubyte{x:32, y:32, z:32};

2 个答案:

答案 0 :(得分:5)

您似乎混合了两种不同的语法:

  1. 结构初始化器:

    enum Point3!ubyte Blocksize = {x:32, y:32, z:32};
    
  2. 结构文字:

    enum Blocksize = Point3!ubyte(32, 32, 32);
    
  3. 以上两种都可行。

答案 1 :(得分:2)

D没有命名参数,所以把它们拿出去,你的代码就可以了:

enum Blocksize = Point3!ubyte(32, 32, 32);

将args放在与struct相同的位置列表中。如果要打开其他选项,还可以在结构中定义构造函数。