On Fri, 22 May 2009 07:54:07 +1200, Robert Clipsham
<rob...@octarineparrot.com> wrote:
Steven Schveighoffer wrote:
Versions are intended to be predefined before usage. It's the same
thing as using a variable before it's defined. The rational is, to
flag errors to the user where he thinks forward referencing of versions
works.
Unfortunately, you have to do the following workaround:
version(BackendFoo) { version=BackendFoo_;}
else version(BackendBar) { version=BackendBar_;}
else version(BackendCar) { version=BackendCar_;}
else
{
version(Windows) {version=BackendFoo_;}
}
And now, you must use Backend*_ in your code. It should work, but
it's ugly.
Maybe Walter has a better method.
-Steve
Unfortunately I thought this might be the case. Thanks.
I think this would be less ugly:
template vers(char[] V)
{
mixin("version(" ~ V ~ ")
{
const bool vers = true;
}
else
{
const bool vers = false;
}");
}
static if(vers!("BackendFoo") || vers!("Windows"))
{
//
}
else static if(vers!("BackendBar"))
{
//
}
else static if (vers!("BackendCar"))
{
//
}
else
{
//
}
I would prefer the normal version statement to work like that directly
though.