Improving version(...)

Tomek Sowiński just at ask.me
Mon Oct 18 12:42:20 PDT 2010


Dnia 18-10-2010 o 18:15:47 F. Almeida <francisco.m.almeida at gmail.com>  
napisał(a):

> The version() { ... } blocks would greatly improve from support of
> boolean operators, which would make code much more readable.
>
> Let us assume, for example, that I have several version identifiers
> (VERSION1, VERSION2, VERSION3, VERSION4, etc.) and that a block of
> code may be compiled in the cases of VERSION1 or VERSION3. It would
> prove the simplest if one could simply use boolean operators to
> express combinations of valid versions and thus be able to do
>
>
> version(VERSION1 || VERSION3)
> {
>  // ...
> }

You can have it now:

template isVersion(string ver) {
     enum bool isVersion = !is(typeof({
           mixin("version(" ~ ver ~") static assert(0);");
     }));
}

static if (isVersion"VERSION1" || isVersion!"VERSION3") {
     ...
}

If you're rushing to reply "That's hideous!", don't bother. I know.

--
Tomek


More information about the Digitalmars-d mailing list