27template<
typename T,
size_t N>
35 constexpr Array(std::initializer_list<T> data)
38 for (
auto iter : data)
58 constexpr T&
at(
size_t i)
61 throw std::out_of_range(
"dl::Array::at outrange");
64 constexpr const T&
at(
size_t i)
const
67 throw std::out_of_range(
"dl::Array::at outrange");
75 bool empty()
const {
return false; }
79 requires std::is_trivial_v<T>
105 constexpr Array(std::initializer_list<T> data)
107 size_t N_LIST = std::size(data);
108 for (
size_t i = 0; i < 2; ++i)
109 _data[i] = i < N_LIST ? *(data.begin() + i) :
T{};
111 constexpr const T&
Get(
size_t i)
const
132 throw std::out_of_range(
"dl::Array::at outrange");
134 constexpr const T&
at(
size_t i)
const
140 throw std::out_of_range(
"dl::Array::at outrange");
146 const T*
end()
const {
return &
x + 2; }
147 bool empty()
const {
return false; }
151 requires std::is_trivial_v<T>
174 constexpr Array(std::initializer_list<T> data)
176 size_t N_LIST = std::size(data);
177 for (
size_t i = 0; i < 3; ++i)
178 _data[i] = i < N_LIST ? *(data.begin() + i) :
T{};
180 constexpr const T&
Get(
size_t i)
const
201 throw std::out_of_range(
"dl::Array::at outrange");
203 constexpr const T&
at(
size_t i)
const
209 throw std::out_of_range(
"dl::Array::at outrange");
215 const T*
end()
const {
return &
x + 3; }
216 bool empty()
const {
return false; }
220 requires std::is_trivial_v<T>
259 constexpr Array(std::initializer_list<T> data)
261 size_t N_LIST = std::size(data);
262 for (
size_t i = 0; i < 4; ++i)
263 _data[i] = i < N_LIST ? *(data.begin() + i) :
T{};
265 constexpr const T&
Get(
size_t i)
const
270 constexpr T Sum(
size_t i,
size_t j)
const
292 throw std::out_of_range(
"dl::Array::at outrange");
294 constexpr const T&
at(
size_t i)
const
300 throw std::out_of_range(
"dl::Array::at outrange");
306 const T*
end()
const {
return &
x + 4; }
307 bool empty()
const {
return false; }
318 constexpr Array(std::initializer_list<T> data)
331 throw std::out_of_range(
"dl::Array::at outrange");
333 constexpr const T&
at(
size_t i)
const
335 throw std::out_of_range(
"dl::Array::at outrange");
340 const T*
begin()
const {
return nullptr; }
341 const T*
end()
const {
return nullptr; }
345template<
typename T,
size_t N>
348 for (
size_t i = 0; i <
N; ++i)
359template<
typename T,
size_t N>
360using Array = std::array<T, N>;
constexpr const T & at(size_t i) const
constexpr Array(std::initializer_list< T > data)
constexpr const T & operator[](size_t i) const
constexpr T & at(size_t i)
constexpr const T & Get(size_t i) const
constexpr const T & operator[](size_t i) const
constexpr const T & at(size_t i) const
constexpr T & operator[](size_t i)
constexpr T & operator[](size_t i)
constexpr T & operator[](size_t i)
constexpr const T & at(size_t i) const
constexpr T & at(size_t i)
constexpr Array(std::initializer_list< T > data)
constexpr const T & operator[](size_t i) const
constexpr const T & operator[](size_t i) const
constexpr T & at(size_t i)
constexpr const T & at(size_t i) const
constexpr T & at(size_t i)
constexpr const T & at(size_t i) const
constexpr const T & Get(size_t i) const
constexpr const T & operator[](size_t i) const
constexpr const T & Get(size_t i) const
constexpr Array(std::initializer_list< T > data)
constexpr T & operator[](size_t i)
constexpr T Sum(size_t i, size_t j) const
constexpr Array(std::initializer_list< T > data)
constexpr Array(std::initializer_list< T > data)
constexpr T & operator[](size_t i)
constexpr T & at(size_t i)
constexpr bool operator==(const Array< T, N > &a, const Array< T, N > &b)