OK. I have done my homework and answered my own question based on the Duff's Device example in the Language Reference page for Mixins.

The solution (not variadic though) would be:

mixin template Select!(alias value,
  alias if0, alias then0,
  alias if1, alias then1,
  alias if2, alias then2,
  alias thenDefault)
{
  switch(value) {
    case if0 : { then0(); } break;
    case if1 : { then1(); } break;
    case if2 : { then2(); } break;
    default : thenDefault();
  }
}

and it is used this way:

mixin Select!(value,
  if0, delegate { then0(); },
  if1, delegate { then1(); },
  if2, delegate { foo(); bar(); },
  delegate { thenDefault(); }
);

no gain at all verbosity-wise I'm afraid... nevermind.

Reply via email to