Template parameter shadowing
Simen kjaeraas
simen.kjaras at gmail.com
Wed Sep 22 06:43:40 PDT 2010
klickverbot <see at 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
More information about the Digitalmars-d
mailing list