Why is Phobos `Flag` so overthought ?
cc
cc at nevernet.com
Wed May 8 04:27:13 UTC 2024
On Monday, 6 May 2024 at 17:55:49 UTC, user1234 wrote:
> I think this just works:
>
> ```d
> enum Flag : bool
> {
> no,
> yes
> }
> ```
> ...
> must be a reason but I cant find it RN ;)
In "properly" designed Phobos packages, it's unambiguous. Take
for example std.datetime.stopwatch:
```d
import std.typecons : Flag;
alias AutoStart = Flag!"autoStart";
alias MyOtherFlag = Flag!"myOtherFlag";
...
//auto sw = StopWatch(true); // Not allowed
//auto sw = StopWatch(MyOtherFlag.yes); // Not allowed
auto sw = StopWatch(AutoStart.yes);
```
It doesn't allow a simple boolean to be used as an argument, or
any other Flag as they are different instantiations of a template
rather than equivalent aliases.
It is however awful, cumbersome, annoying design and needs to be
completely phased out now that we have named arguments.
More information about the Digitalmars-d-learn
mailing list