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