diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 4f22747..1988842 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -406,7 +406,15 @@ template constexpr auto values(std::index_sequence) noexcept { static_assert(is_enum_v, "magic_enum::detail::values requires enum type."); constexpr std::array valid{{is_valid(I)>()...}}; - constexpr std::size_t count = ((valid[I] ? std::size_t{1} : std::size_t{0}) + ...); + constexpr std::size_t count = [](decltype((valid)) valid_) constexpr noexcept -> std::size_t { + auto count_ = std::size_t{0}; + for (std::size_t i_ = 0; i_ < valid_.size(); ++i_) { + if (valid_[i_]) { + ++count_; + } + } + return count_; + }(valid); std::array values{}; for (std::size_t i = 0, v = 0; v < count; ++i) {