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]();
}