2015-12-04 2 views
2

Я хотел бы собрать что-то вроде следующего:Можно ли использовать методы класса шаблонов с использованием 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)(); 
} 

Но я не могу получить эту компиляцию. Есть ли ошибка в коде, который я не вижу, или есть что-то более принципиально неправильное?

ответ

4

Вы использовали неправильный аргумент в шаблоне. Попробуйте template fill(types...) вместо template fill(alias types) и он должен скомпилировать.

AliasSeq представляет собой последовательность аргументов шаблона и соответствует VARIADIC ... вещей вместо одного символа, который является тем, что делает alias вещи.