Andrei Alexandrescu wrote:
But this is clearly the wrong way of cutting the pie.
Right, and I also suggest that it is the C preprocessor way of doing versioning. We're all deep in the C preprocessor rut, and find it difficult to think another way.
For example, I learned to program in Fortran. My early C code looks an awful lot like Fortran. People who came to C from Pascal would write things like:
#define BEGIN {
#define END }
