This enhancement request is almost a bug report. import std.stdio: writeln; enum Foo : char { A='a', B='b', C='c' } void main() { const Foo[] foos = [Foo.A]; writeln(foos); } DMD 2.055beta gives errors, but I'd like to print such arrays too: ...\src\phobos\std\format.d(1338): Error: static assert (isInputRange!(const(Foo)[])) is false ...\src\phobos\std\format.d(1652): instantiated from here: formatValue!(LockingTextWriter,const(Foo[]),immutable(char)) ...\src\phobos\std\format.d(309): instantiated from here: formatGeneric!(LockingTextWriter,const(Foo[]),immutable(char)) ...\src\phobos\std\stdio.d(678): instantiated from here: formattedWrite!(LockingTextWriter,immutable(char),const(Foo[])) ...\src\phobos\std\stdio.d(1511): instantiated from here: write!(const(Foo[]),char) test.d(5): instantiated from here: writeln!(const(Foo[]))
This is not an issue of std.format, is the issue of dmd. enum Foo : char { A='a' } ref const(Foo) f(const(Foo)[] arr){ return arr[0]; } // test.d(2): Error: arr[0u] isn't mutable
https://github.com/D-Programming-Language/dmd/pull/360
https://github.com/D-Programming-Language/dmd/commit/b83b97e7b83e987a035cde99ff0f9de7ca8a0cf4