klickverbot <s...@klickverbot.at> wrote:
In short, should the following be allowed?
---
class Class(T) {
string foo(T)(T arg) {
return T.stringof;
}
string bar() {
return T.stringof;
}
}
unittest {
auto c = new Class!int;
assert(c.foo("asdf") == "string");
assert(c.bar() == "int");
}
---
Note that the T type parameter to the template function shadows the one
from the template class, which might be a source of confusion since T
refers to class template parameter in other member functions.
I believe this is acceptable in the current spec, and as such would be
an enhancement request (local symbols are allowed to shadow global).
That said, I believe it is worthy of inclusion, as one much more rarely
wants to shadow template parameters.
--
Simen