Also wanted to note that if I do: string enumValue = op; writeln(enumValue); Then it also outputs foo and bar. So, why would the behavior of op.to!string not be the same?