1
0
Fork 0
mirror of https://github.com/Neargye/magic_enum.git synced 2026-01-10 23:44:29 +00:00

Compile fix for gcc 7.5 (#62)

This commit is contained in:
Bela Schaum 2020-11-19 14:23:20 +01:00 committed by GitHub
parent 6e932ef66d
commit 1b587718b7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -402,19 +402,22 @@ constexpr E value(std::size_t i) noexcept {
}
}
template <std::size_t N>
constexpr std::size_t count_true(std::array<bool, N> valid_) noexcept {
auto count_ = std::size_t{0};
for (std::size_t i_ = 0; i_ < valid_.size(); ++i_) {
if (valid_[i_]) {
++count_;
}
}
return count_;
}
template <typename E, bool IsFlags, int Min, std::size_t... I>
constexpr auto values(std::index_sequence<I...>) noexcept {
static_assert(is_enum_v<E>, "magic_enum::detail::values requires enum type.");
constexpr std::array<bool, sizeof...(I)> valid{{is_valid<E, value<E, Min, IsFlags>(I)>()...}};
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);
constexpr std::size_t count = count_true(valid);
std::array<E, count> values{};
for (std::size_t i = 0, v = 0; v < count; ++i) {