1#ifndef STATIC_VECTOR_HH
2#define STATIC_VECTOR_HH
9#include <initializer_list>
26template<
typename T,
size_t N>
39 assert(list.size() <= N);
40 std::copy(list.begin(), list.end(), data.data());
41 sz = SizeType(list.size());
44 [[nodiscard]]
constexpr auto begin() const noexcept {
return data.begin(); }
45 [[nodiscard]]
constexpr auto end() const noexcept {
return data.begin() + sz; }
47 [[nodiscard]]
constexpr size_t size()
const {
return sz; }
48 [[nodiscard]]
constexpr bool empty()
const {
return sz == 0; }
50 [[nodiscard]]
constexpr T&
operator[](
size_t index) {
return data[index]; }
51 [[nodiscard]]
constexpr const T&
operator[](
size_t index)
const {
return data[index]; }
53 constexpr void push_back(
const T& a) { assert(sz < N); data[sz++] = a; }
55 constexpr void clear() { sz = 0; }
57 operator std::span< T>() {
return {data.data(), sz}; }
58 operator std::span<const T>()
const {
return {data.data(), sz}; }
61 std::array<T, N> data = {};
constexpr auto begin() const noexcept
constexpr T & operator[](size_t index)
constexpr static_vector(std::initializer_list< T > list)
constexpr const T & operator[](size_t index) const
constexpr static_vector()=default
constexpr auto end() const noexcept
constexpr size_t size() const
constexpr bool empty() const
constexpr void push_back(const T &a)
constexpr vecN< N, T > max(const vecN< N, T > &x, const vecN< N, T > &y)
auto copy(InputRange &&range, OutputIter out)