On Thursday, 9 May 2013 at 10:59:02 UTC, ref2401 wrote:
Version D 2.062
http://dlang.org/template.html#TemplateAliasParameter
Is is said in the documentation that is's possible but i get compile time error.

template GetString(alias Arg)
{
        enum string GetString = Arg.stringof;
}

void main(string[] argv)
{
        writeln(GetString!"1234");
        writeln(GetString!18);
        
writeln(GetString!int); // Error: template instance GetString!(int)
                                // GetString!(int) does not match template
                                // declaration GetString(alias Arg)
        
        readln();
}

You just can't pass by alias built-in types like int or char

Workaround:

import std.stdio;

template GetString(Arg...)
        if(Arg.length == 1)
{
        enum string GetString = Arg[0].stringof;
}

void main(string[] argv)
{
        writeln(GetString!"1234");
        writeln(GetString!18);
        
writeln(GetString!int); // Error: template instance GetString!(int)

                                // GetString!(int) does not match template
                                // declaration GetString(alias Arg)
        
        readln();
}

Reply via email to