The example given in the example for defineEnum in page http://www.digitalmars.com/d/2.0/phobos/std_typecons.html#defineEnum does not compile. The specific code is import std.stdio; import std.typecons; mixin(defineEnum!("Openmode", "READ", "WRITE", "READWRITE", "APPEND")); void main() { Openmode m = Openmode.READ; string s = toString(m); assert(s == "READ"); Openmode m1; assert(fromString(s, m1) && m1 == m); } But DMD (the latest 2.x version) claims that .toString does not exist. Was it removed or broken? Should the bug be filed has "inconsistent documentation" or "broken library"? Lastly, why not put the .toString directly onto the enum structure? Going around with this mixin is just ugly.
Regular enums now support conversion to and from string, which makes defineEnum unnecessary. I deprecated it. http://www.dsource.org/projects/phobos/changeset/2051