16#include <initializer_list>
23template<
typename T1,
typename T, std::
size_t N>
27 for (std::size_t i = 0; i <
N; ++i)
29 ret[i] =
static_cast<T1
>(a[i]);
33template<
typename T, std::
size_t N>
37 for (std::size_t i = 0; i <
N; ++i)
46template<
typename T, std::
size_t N>
54template<
typename T, std::
size_t N>
61template<
typename T, std::size_t
N,
typename T1,
typename ...Args>
64 arr[
N -
sizeof...(Args) - 1] =
static_cast<T>(a);
65 if constexpr (
sizeof...(Args) > 0)
69template<
typename T,
typename T1,
typename ...Args>
70constexpr Array<
T,
sizeof...(Args) + 1>
toArray(
const T1& a, Args... args)
72 Array<
T,
sizeof...(Args) + 1> ret;
79template<
typename ...Args>
88template<
typename ...Args>
95template<
typename T,
typename ...Args>
99 if constexpr (
sizeof...(Args) > 0)
106template<
typename ...Args>
112template<
typename T,
size_t N>
116 for (
int i = 0; i <
N; ++i)
127template<
typename T,
size_t N>
131 for (
int i = 0; i <
N; ++i)
146template<
typename T,
size_t N>
150 for (
int i = 0; i <
N; ++i)
159template<
typename ...Args>
165template<
typename T,
size_t N>
169 for (
int i = 0; i <
N; ++i)
180template<
typename T,
size_t N>
184 for (
int i = 0; i <
N; ++i)
199template<
typename T,
size_t N>
203 for (
int i = 0; i <
N; ++i)
211template<
size_t M = 1,
typename T,
size_t N>
215 for (
size_t i = 0; i <
N; ++i)
217 for (
size_t i =
N; i <
N +
M; ++i)
221template<
size_t M = 1,
typename T>
225 for (
size_t i = 0; i <
M + 1; ++i)
232template<
size_t M = 1,
typename T,
size_t N>
235 static_assert(
M <=
N);
237 for (
size_t i = 0; i <
N -
M; ++i)
constexpr Array< Position::value_type, N > toPosition(const Array< T, N > &a)
转换到Position,已知长度
constexpr void toArrayImp(Array< T, N > &arr, const T1 &a, Args... args)
constexpr void CheckPositive(const T &a, Args... args)
constexpr Array< Size::value_type, sizeof...(Args)> toSize(Args... args)
转换到Size,变长参数
constexpr ArrayS2< T, N - M > toShorter(const ArrayS2< T, N > &a)
constexpr Array< T, N+M > toLonger(const Array< T, N > &a, const T &v={})
长度+M
constexpr Array< SizeT::value_type, N > toSizeTNeg2Zero(const Array< T, N > &a)
转换到Size,出现负数时转为0
constexpr Array< PointU::value_type, N > toSizeDefault(const Array< T, N > &a)
有符号转无符号,直接转换,负数会直接转为大正数
constexpr Array< Size::value_type, N > toSizeNeg2Zero(const Array< T, N > &a)
转换到Size,出现负数时转为0
constexpr Array< Point::value_type, N > toPoint(const Array< T, N > &a)
转换到Point,已知长度
constexpr Array< T1, N > toArray(const Array< T, N > &a)
constexpr Array< SizeT::value_type, sizeof...(Args)> toSizeT(Args... args)
转换到Size,变长参数
constexpr std::vector< T > toVector(const T &a, size_t n)
constexpr Array< SizeT::value_type, N > toSizeTDefault(const Array< T, N > &a)
有符号转无符号,直接转换,负数会直接转为大正数