On 03/28/2010 06:03 PM, bearophile wrote:
The construct defines at compile-time a property for each given name.<

A costant (enum) not a property, sorry.

So this:
alias Flags!q{ A, B, C } Foo;

Becomes equivalent to:

struct Foo {
     enum uint A = 1<<  0;
     enum uint B = 1<<  1;
     enum uint C = 1<<  2;

     private uint _data;

     // operators defined here, with full input tests:
     // =   ==   |    |=    in&    &=  opBool
     ...
}


Foo f = Foo.A | Foo.B;
Now f._data contains the or of the two flags...

Bye,
bearophile

Yah but let's say A|B is used very often so I want to call it AB. How do I specify in the definition of Flags such a definition? I guess

alias Flags!q{ A, B, C, AB = A|B } Foo;

which makes parsing rather difficult.

Andrei

Reply via email to