Bill Baxter wrote: > [snip] >> in C# they use the same syntax as the c pre-processor for conditional >> compilation and such even though C# doesn't have a pre-processor and the >> syntax is interpreted by the compiler. the above would be something like: >> >> void doSomething(T)(int i) { >> if (i == 0) { >> #if (is(T == A)) >> A.SomeAlias x; >> #elif (is(T == B)) >> B.SubType x; >> #else >> T x; >> #endif >> >> x = ... whatever >> } >> else >> int y = x; >> } >> >> D can always revert to this kind of syntax for compile time code. > > > I kinda like that, actually, but I doubt it'll be very popular around here. > > --bb
The '#' has a nice connotation for anyone who's used to C/C++, given that those statements are handled at "compile time." The problem, of course, is that they're really nothing like C preprocessor statements. They have a different syntax, and completely different capabilities. What's more, you can't mix them across statements/expressions, so I suspect it would just cause more confusion. Additionally, there's this: #endif Unless you plan on moving all control structures to BASIC/pascal style, I don't think it's wise to start mixing them all over the place. I do like the idea of a "scopeless block" syntax in theory, though it's not something that's really been an issue for me. -- Daniel