| 32 | */ |
| 33 | template <typename Dims> |
| 34 | [[nodiscard]] constexpr auto size(const Dims& dims) -> size_t { |
| 35 | static_assert(std::is_same_v<typename Dims::value_type, size_t>); |
| 36 | |
| 37 | size_t res = 1; |
| 38 | std::for_each(dims.begin(), dims.end(), [&](auto cur_d) { res *= cur_d; }); |
| 39 | return res; |
| 40 | } |
| 41 | } // namespace array_impl |
| 42 | |
| 43 | template < |