CTFE and cast

k2 k2 at not.com
Fri Jan 13 01:01:10 PST 2012

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

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

More information about the Digitalmars-d-learn mailing list