enum and static if

Artur Skawina via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 11 10:17:38 PDT 2015


On 03/11/15 15:41, ketmar via Digitalmars-d-learn wrote:
> On Wed, 11 Mar 2015 14:36:07 +0000, wobbles wrote:
> 
>> On Wednesday, 11 March 2015 at 14:34:32 UTC, ketmar wrote:
>>> On Wed, 11 Mar 2015 13:48:45 +0000, Namespace wrote:
>>>
>>>> This code does not work:
>>>>
>>>> ----
>>>> enum Test {
>>>>      Foo,
>>>> static if (__VERSION__ >= 2067)
>>>>      Bar,
>>>> }
>>>>      Quatz
>>>> }
>>>> ----
>>>>
>>>> Any chance that this could work?
>>>
>>> nope. `static if` is statement, so it works only where statement is
>>> allowed. the same is true for `version`. this is by design.
>>
>> You can do something like static if (__VERSION__ >= 2067)
>>      enum Test{ ... }
>> else
>>      enum Test{ ... }
>>
>> as a workaround?
> 
> sure, but you have to copypaste the whole enum in both places. maybe 
> allowing `version` in enums worth a ER...

   mixin(`
   enum Test {
       Foo,`
   ~(__VERSION__>=2067?`
       Bar,`:``)
   ~`  Quatz
   }`);

artur


More information about the Digitalmars-d-learn mailing list