Template with template?
John Colvin
john.loughran.colvin at gmail.com
Thu Mar 20 09:33:13 PDT 2014
On Thursday, 20 March 2014 at 16:28:46 UTC, Chris wrote:
> How can I instantiate Person with Trait, i.e. a template with a
> template?
>
> struct Trait(T0, T1) {
> T0 name;
> T1 value;
> T1[T0] map;
>
> this(T0 name, T1 value) {
> this.name = name;
> this.value = value;
> map[name] = value;
> }
> }
>
> class Person(T) {
> T traits[];
>
> void addTrait(T trait) {
> traits ~= trait;
> }
> }
>
>
> void main()
> {
> auto trait1 = Trait!(string, string)("Name", "John");
> auto trait2 = Trait!(string, int)("Age", 42);
> writefln(%s", trait1.map);
> writefln(%s", trait2.map);
> // above code compiles and works
> }
templates can be passed to templates as alias parameters, or as
part of a TemplateArgumentTuple. See
http://dlang.org/template.html#aliasparameters
More information about the Digitalmars-d-learn
mailing list