There is also inconsistency within UFCS - type depends on whether function is a member or standalone (even if I replace `auto ref` with `ref U`):
```d struct U { ref U func(int i)() { return this; } } ref U func2(int i)(ref U u) { return u; }
void main() { U u;pragma(msg, typeof(u.func!0)); // pure nothrow @nogc ref @safe U() return
pragma(msg, typeof(u.func2!0)); // U } ```