module runme; import tango.io.Stdout; import example; public class DCallback : Callback { public override void run() { Stdout( "DCallback.run()" ).newline; } } void main() { auto caller = new Caller(); Stdout( "Adding and calling a normal C++ callback" ).newline; Stdout( "----------------------------------------" ).newline; { scope auto callback = new Callback(); caller.setCallback(callback); caller.call(); caller.resetCallback(); } Stdout.newline; Stdout( "Adding and calling a D callback" ).newline; Stdout( "-------------------------------" ).newline; { scope auto callback = new DCallback(); caller.setCallback(callback); caller.call(); caller.resetCallback(); } Stdout.newline; Stdout( "D exit" ).newline; }