是否可以使用 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 的作用。