The following code compiles fine for me with dmd 1.043: ---------- module wtf;
version(Tango) import tango.io.Stdout; else import std.stdio; interface Printer { void print(); } class WTF { Printer p; this(int x) { p = new class Printer { override void print() { version(Tango) Stdout(x).newline(); else writefln(x); } }; } } void main() { WTF wtf = new WTF(42); wtf.p.print(); } ---------- The anonymous class is given a method that prints the int x, however, by the time wtf.p.print() is called, x has gone out of scope. It's still possible to call the print(), though, and it just prints garbage. Should this be a compiler error?