20#ifndef INCLUDED_O3TL_ENUMARRAY_HXX
21#define INCLUDED_O3TL_ENUMARRAY_HXX
32class enumarray_iterator;
34class enumarray_const_iterator;
46template<
typename E,
typename V>
66 template<
typename... T>
constexpr enumarray(V
const & arg, T && ...args):
69 static_assert(
sizeof... (T) ==
max_index);
113 typename std::make_signed<
114 typename std::underlying_type<typename EA::key_type>::type>::type
138 typename std::make_signed<
139 typename std::underlying_type<typename EA::key_type>::type>::type
141 typedef typename EA::value_type
const *
pointer;
value_type & operator*() const
EA::value_type const value_type
EA::value_type const * pointer
enumarray_const_iterator(EA const &b, size_t start_pos)
value_type * operator->() const
std::make_signed< typenamestd::underlying_type< typenameEA::key_type >::type >::type difference_type
EA::value_type const & reference
bool operator==(self_type const &other) const
std::bidirectional_iterator_tag iterator_category
bool operator!=(self_type const &other) const
enumarray_const_iterator< EA > self_type
value_type * operator->() const
EA::value_type & reference
std::bidirectional_iterator_tag iterator_category
bool operator==(self_type const &other) const
EA::value_type value_type
value_type & operator*() const
bool operator!=(self_type const &other) const
enumarray_iterator< EA > self_type
std::make_signed< typenamestd::underlying_type< typenameEA::key_type >::type >::type difference_type
enumarray_iterator(EA &b, size_t start_pos)
This is a container convenience class for arrays indexed by enum values.
static const size_type max_index
const_iterator begin() const
const_iterator end() const
enumarray_const_iterator< self_type > const_iterator
constexpr enumarray(V const &arg, T &&...args)
enumarray_iterator< self_type > iterator
std::array< V, max_index+1 > detail_values
const V & operator[](E index) const
enumarray< E, V > self_type