Можно ли иметь методы класса шаблона, использующие 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 вещь делает.

Другие вопросы по тегам