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.