June 15, 2022
https://issues.dlang.org/show_bug.cgi?id=23188

          Issue ID: 23188
           Summary: The enum of const has a complier exception of type
                    conversion in the ternary operator.
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: shove@163.com

enum Status : byte
{
    A, B, C
}

void main()
{

}

Status foo()
{
    Status t = Status.A;
    const Status s = t;

    return (s == Status.A) ? Status.B : s;  // <-- here
}

# dmd app.d
app.d(16): Error: cannot implicitly convert expression `cast(int)s == 0 ? 1 :
cast(int)s` of type `int` to `Status`

/////////////////////////////////////////

So there's no problem:

Status foo()
{
    Status t = Status.A;
    const Status s = t;

    if (s == Status.A)
        return Status.B;
    return s;
}

--