On Fri, Dec 05, 2014 at 03:39:07AM +0200, ketmar via Digitalmars-d wrote: [...] > also, it's worth noting that Delphi's IFDEF/ENDIF completely ignores > everything inbetwee if condition is false, but D `version` and `static > if` requires ignored code to be correct D code nevertheless. [...]
That's not completely true. All that's required is that the code can be parsed successfully. It can be semantically nonsense and the compiler wouldn't care, for example this will compile, even though it's complete garbage: version(none) { NonExistentType x = nonExistentVar; static assert(0); NoType YesParsingStillContinuesHere()(z = y+w ? 1 : "") if (is(a == b)) // a and b are nonsense symbols in { static assert(0); } body { gar(bage) = hahaha(cast(el)ation); {{{}}{}{{}}} } pragma(no, such, __trait(nonsense)); } T -- Любишь кататься - люби и саночки возить.