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.