On page 530 of Programming in D, we have this code snippet:
```
 class C {
 void opCall() {
 writeln("C.opCall called.");
 }
 }
 // ...
 auto o = new C();
 caller!o();
 caller!({ writeln("Function literal called."); })();
```

Converted this to source/app.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.");
        }
}

```

Compiled with DMD yielding error messages:
```
c:\dev\D\71 - 80\c78_3k_alias_template_opCall_overload\source\app.d(5): Error: template instance `caller!o` template `caller` is not defined
    caller!o();
    ^
c:\dev\D\71 - 80\c78_3k_alias_template_opCall_overload\source\app.d(7): Error: template instance `caller!(()
{
writeln("Function literal called.");
}
)` template `caller` is not defined
    caller!({ writeln("Function literal called."); })();
    ^
```

What is needed to get this code to compile?
My only idea is that a #import statement is missing.

Reply via email to