是否可以在d / dlang中使用AliasSeq的模板类方法?

时间:2015-12-04 01:02:32

标签: templates d static-analysis

我想编译如下内容:

import std.meta: AliasSeq;
import std.stdio: writeln;

class Bag {
    template fill(alias types) {
        void fill() {
            writeln("Do stuff");
        }
    }
}

void main(){
    auto bag = new Bag();
    alias stuff = AliasSeq!(int, ubyte[]);
    bag.fill!(stuff)();
}

但是我无法编译。在我看不到的代码中是否存在错误,或者是否存在更根本的错误?

1 个答案:

答案 0 :(得分:4)

您刚刚对模板使用了错误的参数。尝试template fill(types...)而不是template fill(alias types),它应该编译。

AliasSeq是一系列模板参数,对应于可变参数...而不是单个符号,这就是alias的作用。