On Tuesday, 10 March 2015 at 07:04:48 UTC, Andre wrote:
Hi,

following coding raises a compiler error with the beta of 2.067.
Is this error intended or not?
It is working if I change first line of main to: ulong bits;

enum Bits: ulong
{
        none = 0
}

bool hasBit(ref ulong rBits, ulong rBit)
{
        return cast(bool)(rBits & rBit);
}

void main()
{
        Bits bits;
        hasBit(bits, Bits.none);
}

function app.hasBit (ref ulong rBits, ulong rBit) is not callable using argument types (Bits, Bits)

Kind regards
André

It's because enums are not implicitly convertible to their base type. It was probably a compiler bug that it worked before. It's a regression however, so I'll file an issue in Bugzilla. In the meantime you can do:

hasBit(cast(ulong)bits, Bits.none);

Or just use a ulong as you mentioned.

Reply via email to