diff --git a/include/magic_enum_flags.hpp b/include/magic_enum_flags.hpp index 4dae90e..0f82833 100644 --- a/include/magic_enum_flags.hpp +++ b/include/magic_enum_flags.hpp @@ -57,12 +57,15 @@ template auto check_value = U{0}; for (std::size_t i = 0; i < detail::count_v; ++i) { if (const auto v = static_cast(enum_value(i)); (static_cast(value) & v) != 0) { - check_value |= v; - const auto n = detail::names_v[i]; - if (!name.empty()) { - name.append(1, sep); + if (const auto n = detail::names_v[i]; !n.empty()) { + check_value |= v; + if (!name.empty()) { + name.append(1, sep); + } + name.append(n.data(), n.size()); + } else { + return {}; // Value out of range. } - name.append(n.data(), n.size()); } }