On Tuesday, 9 September 2025 at 00:40:31 UTC, Brother Bill wrote:

```
c:\dev\D\D_templates_tutorial\toy1\source\app.d(8): Error: no property `callHome` for `l` of type `app.CallLogger!(C)`
    l.callHome("foo", "bar");
     ^
```

You might be expecting `opDispatch` inside `CallLogger` to try and build `opDispatch!("callHome")("foo", "bar")`.

The thing is, it does. But when the compiler encounters failures, it means that it assumes `opDispatch` was not designed to handle that function, and it moves on to other options (UFCS maybe).

This is a long standing issue, and one that is very difficult to fix due to the way name lookup rules are working in the compiler.

In short `opDispatch` only is valid if it compiles. If it doesn't compile, it's as if it doesn't exist. This limitation is likely with us until someone can rework how the name lookups and IFTI works.

-Steve

Reply via email to