`std.typecons.BitFlags` now supports opDispatch-based property access $(REF BitFlags, std.typecons) was extended so that enum members can be set and tested directly on the `BitFlags` instead of having to `&` with the underlying enum. ------- enum Features { fast = 1 << 0, size = 1 << 1, } void run(BitFlags!Features features) { // get if (features.fast && !features.size) {} // new new new if ((features & Features.fast) && !(features & Features.size)) {} // old old old // set features.fast = true; // new new new features.fast = false; // new new new features.fast |= Features.fast; // old old old features.fast &= ~Features.fast; // old old old } ------- This also works for unsafe `BitFlags` where the property get access tests for an exact match of all bits of the unsafe `BitFlags` combination. Analogously, the property set access clears or sets all bits of the unsafe `BitFlags` combination. ------- enum Features { fast = 1 << 0, size = 1 << 1, combined = fast | size, } void run(BitFlags!(Features, Yes.unsafe) features) { // get if (features.combined) {} // new new new if ((features & Features.combined) == BitFlags!(Features, Yes.unsafe)(Features.combined)) {} // old old old // set features.combined = true; // new new new features.combined = false; // new new new features.combined |= Features.combined; // old old old features.combined &= ~Features.combined; // old old old } -------