But the question is still opened: why is `typeof(U().func!0)` not the same as `typeof(U().func!0())`?

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
}
```

Reply via email to