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.

Reply via email to