Можно ли иметь методы класса шаблона, использующие AliasSeq в 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)();
}
Но я не могу заставить это скомпилировать. Есть ли ошибка в коде, который я не вижу, или что-то более фундаментальное неправильно?
1 ответ
Решение
Вы просто использовали неправильный тип аргумента для шаблона. Пытаться template fill(types...)
вместо template fill(alias types)
и это должно скомпилироваться.
AliasSeq
представляет собой последовательность аргументов шаблона и соответствует переменной ...
вещь вместо одного символа, который является то, что alias
вещь делает.