Isn't this a little better: void main() { foreach(i; 0 .. 10) { writeln(i); when(i == 9, log("wee")); } } bool log(string str) { writeln(str); return true; } void when(bool delegate()[] dg...) { if (dg[0]()) dg[1](); }