19 static constexpr size_t size()
noexcept {
20 return sizeof...(Tags);
24 return tag_at_index<Tags...>(i);
28 return has_tag<Tags...>(tag);
31 constexpr auto begin()
noexcept {
35 constexpr auto end()
noexcept {
39 constexpr auto begin()
const noexcept {
43 constexpr auto end()
const noexcept {
48 constexpr T &operator[](
size_t i)
noexcept {
52 constexpr T
const &operator[](
size_t i)
const noexcept {
57 return data[index_of_tag<Tags...>(tag)];
61 return data[index_of_tag<Tags...>(tag)];
64 template<
typename Tag>
65 constexpr T &get()
noexcept {
66 return data[index_of_tag<Tag,Tags...>()];
69 template<
typename Tag>
70 constexpr T
const &get()
const noexcept {
71 return data[index_of_tag<Tag,Tags...>()];