我想编译如下内容:
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)();
}
但是我无法编译。在我看不到的代码中是否存在错误,或者是否存在更根本的错误?
答案 0 :(得分:4)
您刚刚对模板使用了错误的参数。尝试template fill(types...)
而不是template fill(alias types)
,它应该编译。
AliasSeq
是一系列模板参数,对应于可变参数...
而不是单个符号,这就是alias
的作用。