#pragma once #include "enchantum.hpp" #include #include #include namespace enchantum::istream_operators { template requires std::assignable_from std::basic_istream& operator>>(std::basic_istream& is, E& value) { std::basic_string s; is >> s; if (!is) return is; if constexpr (is_bitflag) { if (const auto v = enchantum::cast_bitflag(s)) value = *v; else is.setstate(std::ios_base::failbit); } else { if (const auto v = enchantum::cast(s)) value = *v; else is.setstate(std::ios_base::failbit); } return is; } } // namespace enchantum::istream_operators