On 3/14/2014 10:26 AM, Johannes Pfau wrote:
I use manifest constants instead of version identifiers as well. If a version identifier affects the public API/ABI of a library, then the library and all code using the library always have to be compiled with the same version switches(inlining and templates make this an even bigger problem). This is not only inconvenient, it's also easy to think of examples where the problem will only show up as crashes at runtime. The only reason why that's not an issue in phobos/druntime is that we only use compiler defined versions there, but user defined versions are almost unusable.
Use this method: -------- import wackyfunctionality; ... WackyFunction(); -------- module wackyfunctionality; void WackyFunction() { version (Linux) SomeWackyFunction(); else version (OSX) SomeWackyFunction(); else ... workaround ... } --------