Am 23.09.2011, 17:14 Uhr, schrieb Gor F. Gyolchanyan
<[email protected]>:
I suggest to rewrite the version functionality as follows.
Replace all existing functionality regarding version with a single
compile-time
built-in construct (much like the `is` expression)
version(/* boolean expression */)
, which will returns true if all symbols withing the expression are
defined
(including identifiers) and the expression yields true.
then, the process of version tracking will look like this:
enum MY_API = true;
enum MY_API_VERSION = 4;
static if(version(MY_API) && version(MY_API_VERSION >= 2))
{
// ...
// Note, that if either MY_API or MY_API_VERSION is not defined, the
static
if's expression will be false.
}
That would unnecessarily and heavily break existing code.
Also it's a good thing to get an error if you want to use enums for
versioning and they don't exist (including spell check results).