I actually have a question since this topic is brought up: What is conceptual difference between `version(FOO)` and `static if(FOO)`? I see `version` is a very limited comparing to `static if` - the former checks for "boolean" result (whether an ID is defined) while the latter evaluates condition expression.