how can I ensure that a template instantiation is unique?

Andrew Edwards via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 18 23:40:21 PDT 2014


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;
}


More information about the Digitalmars-d-learn mailing list