enum and static if

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 11 10:19:20 PDT 2015


On Wed, 11 Mar 2015 18:17:38 +0100, Artur Skawina via Digitalmars-d-learn
wrote:

> 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

yes, it works. it also can be a participant in "ugly D code of the month" 
contest. ;-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20150311/a2c86aca/attachment.sig>


More information about the Digitalmars-d-learn mailing list