You could do something like this:
alias Foo!(
OptionType.optType1, 100,
OptionType.optType2, "example,
...etc...
) MyFoo;
Yes. I already use this. But it makes it not semanticaly obvious
that OptionType.optType1 is a kind of `key` and 100 is `value`.
Also it needs to parse it and check for correctness that you have
`key` and corresponding value. Also code that realize parsing
could shadow main logic of class/function. Another point is that
`key`: `value` form is easier to read than sequence of some
values separated by ','. You often need to move every key-value
pair to single line to make it readeble.
May be it's just syntactic sugar and isn't looking in D'ish way
or something.