Am 23.09.2011, 17:14 Uhr, schrieb Gor F. Gyolchanyan <gor.f.gyolchan...@gmail.com>:

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).

Reply via email to