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.

Reply via email to