27 static_assert(std::is_enum_v<K>);
40 auto idx =
static_cast<std::underlying_type_t<K>
>(k);
41 assert(idx >= 0 && idx < int64_t(N));
43 m_map[idx] = std::move(v);
47 constexpr const V& operator[](K k)
const noexcept
49 auto idx =
static_cast<std::underlying_type_t<K>
>(k);
50 assert(idx >= 0 && idx < int64_t(N));
55 constexpr const V& operator[](int64_t idx)
const noexcept
57 assert(idx >= 0 && idx < int64_t(N));
62 constexpr K key(
const V& v)
const noexcept
64 for(std::size_t i = 0; i < N; i++)
68 return static_cast<K
>(i);
76 constexpr std::optional<K> find_key(
const V& v)
const noexcept
78 for(std::size_t i = 0; i < N; i++)
82 return static_cast<K
>(i);
91 assert(i >= 0 && i < int64_t(N));
92 return {
static_cast<K
>(i), m_map[i]};
95 [[nodiscard]]
constexpr std::size_t size()
const noexcept {
return N; }