struct Foo { static size_t index(size_t v)() { return v; } } enum s = Foo.index!(0)(); ---- CTFE internal error: cannot evaluate (Foo , index)() at compile time ---- In CallExp::semantic around line 7513: if (!f->needThis()) { VarExp *ve = new VarExp(loc, f); e1 = new CommaExp(loc, ue->e1, ve); e1->type = f->type; } a comma expression is created with ue->e1 being a TypeExp. The CTFE interpretation can't handle this case in CallExp::interpret.
https://github.com/D-Programming-Language/dmd/commit/5011154cdb4e9d48f4a866b18defb2b03f93a2b2 https://github.com/D-Programming-Language/dmd/commit/fdca0001179a43a188f3c003bf2b50757e250403