#include #include enum class Foo { bar, baz }; std::ostream &operator <<(std::ostream &out, Foo f) { switch (f) { case Foo::bar: out << "bar"; break; case Foo::baz: out << "baz"; break; default: out << "(invalid)"; break; } return out; } int main() { auto s = boost::lexical_cast(Foo::baz); std::cout << s << '\n'; }