39 template <
size_t w = numWords, std::enable_if_t<w == 1,
int> = 0>
46 template <
size_t w = numWords, std::enable_if_t<w == 2,
int> = 0>
48 : contents { { a, b } }
53 template <
size_t w = numWords, std::enable_if_t<w == 3,
int> = 0>
55 : contents { { a, b, c } }
60 template <
size_t w = numWords, std::enable_if_t<w == 4,
int> = 0>
62 : contents { { a, b, c, d } }
67 template <
size_t w, std::enable_if_t<w == numWords,
int> = 0>
102 template <
size_t index>
105 constexpr auto word = index / 8;
111 template <
size_t index>
114 constexpr auto word = index / 4;
120 template <
size_t index>
123 constexpr auto word = index / 2;
129 template <
size_t index>
133 std::get<index> (copy.contents) = value;
137 template <
size_t index>
143 template <
size_t index>
149 template <
size_t index>
155 template <
size_t index>
158 return std::get<index> (contents);
162 using Contents = std::array<uint32_t, numWords>;
164 using const_iterator =
typename Contents::const_iterator;
166 const_iterator begin()
const noexcept {
return contents.begin(); }
167 const_iterator cbegin()
const noexcept {
return contents.begin(); }
169 const_iterator end()
const noexcept {
return contents.end(); }
170 const_iterator cend()
const noexcept {
return contents.end(); }
172 const uint32_t* data()
const noexcept {
return contents.data(); }
174 const uint32_t& front()
const noexcept {
return contents.front(); }
175 const uint32_t& back()
const noexcept {
return contents.back(); }
180 Contents contents { {} };