Template expansion bug?

monarch_dodra monarchdodra at gmail.com
Fri May 31 10:56:13 PDT 2013


On Friday, 31 May 2013 at 14:42:32 UTC, Steven Schveigho
> I can't at the moment think of a reason why anyone would ever 
> use the full syntax, but I would expect it to be accessible, 
> and for the compiler to treat foo as a template first, function 
> call second.
>
> -Steve

I do believe that the idea is that once a template is 
"eponymous", then all calls are supposed to be aggressively 
expanded to the internal name, and not just "can be omitted". 
Once you've written the template, it is immediately "assumed" to 
be the eponymous call. At that point, trying to make a fully 
qualified call fails, because the template was already "expanded" 
(for lack of a better word).

Leaving the possibility to choose both syntax would allow 
ambiguity, which is never good: Your template is either 
eponymous, or it isn't. It's not "sometimes eponymous".

 From what you have shown, I'd just say 2.062 introduced a bug, 
which was fixed by 2.063.

EDIT: Allow I think that there is a bug that a template becomes 
eponymous when it contains a single public function that is 
eponymous, regardless of other functions. IMO, that is a good 
thing, but the spec state that there should be ONLY members with 
the same name.

As for the "Exactly one": That's bullocks, unless you mean that 
overloads define a single function. There are tons of places 
where we use a template with overloaded eponymous resolution. I 
think the spec is wrong on that one.


More information about the Digitalmars-d mailing list