On 6/19/14, 1:48 AM, Vlad Levenfeld wrote:
I'm instantiating a couple of template structs that conflict with each
other. I'd like them to be unique types, automatically. So I tried this:

template Foo (string unique_id = __FILE__~__LINE__.to!string)
{...}

but it didn't work. When I use this for templated functions, I get the
file and line number where the function is instantiated. But in this
case, I got the file and line number where the template was defined.

Is there anything I can do to make sure each instantiated type is unique?

I don't think you want to set a default value. If you pass "__FILE__~__LINE__.to!string" during instantiation, it works every time:

template Foo(string uniqueId)
{
        alias Foo = uniqueId;
}

void main()
{
        Foo!(__FILE__~__LINE__.to!string).writeln;
}

Reply via email to