In DMD 2.051, std.functional, line 53: enum testAsStmts = "{"~ElementType.stringof~" "~parmName~"; "~fun~"}()"; I think the line is missing a semicolon after "~fun~". Fixed: enum testAsStmts = "{"~ElementType.stringof~" "~parmName~"; "~fun~";}()"; But the code that uses the enum is commented out for some reason. Line 250, binaryReverseArgs: Why not replace this complex return type: typeof({ ElementType1 a; ElementType2 b; return pred(b, a);}()) binaryReverseArgs(ElementType1, ElementType2)(ElementType1 a, ElementType2 b) { return pred(b, a); } with the simpler: auto binaryReverseArgs(ElementType1, ElementType2)(ElementType1 a, ElementType2 b) { return pred(b, a); } unittests will still pass.
Simplifying binaryReverseArgs is now proposed in the pull for bug 7878. https://github.com/D-Programming-Language/phobos/pull/544 So I'd merge this to 7878. *** This issue has been marked as a duplicate of issue 7878 ***