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