On Saturday, 23 August 2025 at 13:42:52 UTC, Nick Treleaven wrote:
On Saturday, 23 August 2025 at 13:38:27 UTC, Nick Treleaven wrote:
I'm not aware of any template function called `caller` - perhaps it is defined in the book somewhere?

```d
void caller(alias func)() {
    write("calling: ");
    func();
}
```
https://dlang.org/book/templates_more.html#ix_More%20Templates.alias,%20template%20parameter

That is the missing piece.

app/source.d
```
import std.stdio;

void main() {
        auto o = new C();
        caller!o();

        caller!({ writeln("Function literal called."); })();
}

class C {
        void opCall() {
                writeln("C.opCall called.");
        }
}

void caller(alias func)() {
    write("calling: ");
    func();
}

```

Running produces: (matching the book)
```
calling: C.opCall called.
calling: Function literal called.
```

Reply via email to