>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