On Monday, 27 January 2020 at 20:06:14 UTC, Herbert wrote:
How can I create a subrange type, for example ushort DiceValue {1 .. 6}?
Probably the closest you can get is a struct with an invariant: import std.traits: isOrderingComparable; struct Subrange(T, T min, T max) if (isOrderingComparable!T) { private T value_ = min; invariant(min <= value && value <= max); this(T t) { value_ = t; } T value() { return value_; } alias value this; ref Subrage opAssign(T t) { value_ = t; return this; } }