void xml_writer_impl::write_text(const variant& text) { try { switch(text.type()) { case variant::Any: case variant::String: { m_os << detail::xml_utility::escape_chars(text.as<std::string>()); break; } case variant::Int32: case variant::UInt32: case variant::Int64: case variant::UInt64: case variant::Float: case variant::Double: case variant::Boolean: case variant::Date: case variant::Time: case variant::DateTime: { m_os << text.any_cast().as<std::string>(); break; } default: boost::throw_exception(variant_error("Attempt to output non-primitive variant as text: " + variant::enum_to_string(text.type()))); } } catch (const std::exception &e) { boost::throw_exception(variant_error(e.what())); } catch (...) { boost::throw_exception(variant_error("Unhandled Exception")); } }