Make util enum values_range constexpr

This commit is contained in:
Nikita Lisitsa 2023-02-25 12:42:36 +03:00
parent 84b804adf7
commit 11af452b16

View file

@ -48,7 +48,7 @@ namespace psemek::util
underlying_type value;
Enum operator *() const { return static_cast<Enum>(value); }
constexpr Enum operator *() const { return static_cast<Enum>(value); }
enum_iterator operator ++() { ++value; return *this; }
enum_iterator operator ++ (int)
@ -81,7 +81,7 @@ namespace psemek::util
auto rbegin() const { return std::make_reverse_iterator(end()); }
auto rend() const { return std::make_reverse_iterator(begin()); }
auto size() const { return last.value - first.value; }
constexpr auto size() const { return last.value - first.value; }
};
}
@ -110,6 +110,6 @@ namespace psemek::util
} \
template <typename Char, typename Traits> \
inline ::std::basic_ostream<Char, Traits> & operator << (::std::basic_ostream<Char, Traits> & os, name value) { return os << to_string(value); } \
inline ::psemek::util::enum_range<name> BOOST_PP_CAT(name, _values) () { return {{0}, {BOOST_PP_SEQ_SIZE(values)}}; }
constexpr inline ::psemek::util::enum_range<name> BOOST_PP_CAT(name, _values) () { return {{0}, {BOOST_PP_SEQ_SIZE(values)}}; }