When replace typedef to enum, it became impossible to compile a certain
portion.

dmd v2.057 Windows
--------------------------------------------
enum HANDLE : void* {init = (void*).init}

pure HANDLE int_to_HANDLE(int x)
{
    return cast(HANDLE)x;
}

void bar()
{
    HANDLE a = cast(HANDLE)1;// ok
    HANDLE b = int_to_HANDLE(2);// ok
}

HANDLE c = cast(HANDLE)3;// ok
HANDLE d = int_to_HANDLE(4);// NG
--------------------------------------------
foo.d(17): Error: cannot implicitly convert expression (cast(void*)4u)
of type void* to HANDLE

Reply via email to