是否可以使用 d/dlang 中的 AliasSeq 模板 class 方法?
Is it possible to have template class methods using AliasSeq in d/dlang?
我想编译如下内容:
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)();
}
但是我无法编译它。代码中是否存在我没有看到的错误,或者是否存在更根本的错误?
您刚刚使用了错误类型的模板参数。尝试 template fill(types...)
而不是 template fill(alias types)
,它应该可以编译。
AliasSeq
是一系列模板参数,对应于可变参数 ...
而不是单个符号,这就是 alias
的作用。
我想编译如下内容:
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)();
}
但是我无法编译它。代码中是否存在我没有看到的错误,或者是否存在更根本的错误?
您刚刚使用了错误类型的模板参数。尝试 template fill(types...)
而不是 template fill(alias types)
,它应该可以编译。
AliasSeq
是一系列模板参数,对应于可变参数 ...
而不是单个符号,这就是 alias
的作用。