diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 91d6e24..38cfaba 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -323,24 +323,28 @@ template > namespace ops { -template , typename = detail::enable_if_enum_t> -std::ostream& operator<<(std::ostream& os, E value) { +template , typename = detail::enable_if_enum_t> +std::basic_ostream& operator<<(std::basic_ostream& os, E value) { static_assert(std::is_enum_v, "magic_enum::ops::operator<< requires enum type."); if (auto name = detail::name_impl(static_cast(value)); !name.empty()) { - os << name; + for (auto c : name) { + os.put(c); + } } return os; } -template > -std::ostream& operator<<(std::ostream& os, std::optional value) { +template , typename = detail::enable_if_enum_t> +std::basic_ostream& operator<<(std::basic_ostream& os, std::optional value) { static_assert(std::is_enum_v, "magic_enum::ops::operator<< requires enum type."); if (value.has_value()) { - if (auto name = detail::name_impl(static_cast(value.value())); !name.empty()) { - os << name; + if (auto name = detail::name_impl(static_cast(value.value())); !name.empty()) { + for (auto c : name) { + os.put(c); + } } }