18 template<
typename T, std::
size_t N>
75 template<
typename IndexType>
81 template<
typename IndexType>
99 for(std::size_t i = 0; i < N; ++i)
100 if(a.element[i] != b.element[i])
113 for(std::size_t i = 0; i < N; ++i)
114 temp[i] = a[i] + b[i];
118 template<std::
size_t I>
124 template<std::
size_t I>
187 template<
typename IndexType>
193 template<
typename IndexType>
224 template<std::
size_t I>
230 template<std::
size_t I>
237 [[noreturn]]
void outOfRange()
const
239 throw std::out_of_range{
"Array has zero length"};
244 template<
typename First,
typename... Args>
245 Array(First, Args... args) ->
Array<First,
sizeof...(Args) + 1>;
248 template<
typename T, std::
size_t N>
266 template<
typename T, std::
size_t N>
272 for(std::size_t i = 0; i < N; i++)
278 template<
typename T, std::
size_t N>
283 for(std::size_t i = 0; i < N; i++)
290 template<
typename T, std::
size_t N>
293 static_assert(N > 0);
296 for(std::size_t i = 0; i < N - 1; i++)
302 template<
typename T, std::
size_t N>
305 static_assert(N > 0);
308 for(std::size_t i = 0; i < N - 1; i++)
314 template<
typename T, std::
size_t N>
324 template<
typename T, std::
size_t N>
329 for(std::size_t i = 0; i < N; i++)
336 template<
typename T,
size_t N>
337 struct std::tuple_size<
llama::
Array<T, N>> : std::integral_constant<size_t, N>
342 template<
size_t I,
typename T,
size_t N>
#define LLAMA_FN_HOST_ACC_INLINE
constexpr auto pushBack([[maybe_unused]] Array< T, N > a, T v) -> Array< T, N+1 >
constexpr auto dot([[maybe_unused]] Array< T, N > a, [[maybe_unused]] Array< T, N > b) -> T
Array(First, Args... args) -> Array< First, sizeof...(Args)+1 >
auto operator<<(std::ostream &os, const Array< T, N > &a) -> std::ostream &
constexpr auto popBack([[maybe_unused]] Array< T, N > a)
constexpr auto product(Array< T, N > a) -> T
constexpr auto popFront([[maybe_unused]] Array< T, N > a)
constexpr auto pushFront([[maybe_unused]] Array< T, N > a, T v) -> Array< T, N+1 >
constexpr auto size() const
constexpr auto back() const -> const T &
constexpr auto data() const -> const T *
constexpr friend auto operator+(const Array &, const Array &) -> Array
constexpr auto get() -> T &
constexpr auto data() -> T *
constexpr friend auto operator!=(const Array &, const Array &) -> bool
constexpr auto end() const -> const T *
constexpr auto get() const -> const T &
constexpr auto end() -> T *
constexpr auto begin() const -> const T *
constexpr auto empty() const -> bool
constexpr auto front() -> T &
constexpr auto front() const -> const T &
constexpr friend auto operator==(const Array &, const Array &) -> bool
constexpr auto back() -> T &
constexpr auto operator[](IndexType &&) -> T &
constexpr auto begin() -> T *
constexpr auto operator[](IndexType &&) const -> const T &
constexpr auto back() -> T &
constexpr friend auto operator+(const Array &a, const Array &b) -> Array
constexpr auto operator[](IndexType &&idx) -> T &
constexpr auto begin() -> T *
constexpr auto front() const -> const T &
constexpr auto get() const -> const T &
constexpr auto end() const -> const T *
constexpr friend auto operator!=(const Array &a, const Array &b) -> bool
constexpr friend auto operator==(const Array &a, const Array &b) -> bool
constexpr auto end() -> T *
constexpr auto empty() const -> bool
constexpr auto size() const
constexpr auto data() -> T *
constexpr auto begin() const -> const T *
constexpr auto data() const -> const T *
constexpr auto operator[](IndexType &&idx) const -> const T &
constexpr auto front() -> T &
constexpr auto get() -> T &
constexpr auto back() const -> const T &