16 #include <type_traits>
19 inline namespace _V1 {
20 template <
int dimensions>
class id;
21 template <
int dimensions>
class range;
24 template <
int dimensions = 1>
class array {
25 static_assert(dimensions >= 1,
"Array cannot be 0-dimensional.");
30 template <
int N = dimensions>
31 array(
typename std::enable_if_t<(N == 1),
size_t> dim0 = 0)
36 template <
int N = dimensions>
37 array(
typename std::enable_if_t<(N == 2),
size_t> dim0,
size_t dim1)
40 template <
int N = dimensions, std::enable_if_t<(N == 2),
size_t> = 0>
45 template <
int N = dimensions>
46 array(
typename std::enable_if_t<(N == 3),
size_t> dim0,
size_t dim1,
50 template <
int N = dimensions, std::enable_if_t<(N == 3),
size_t> = 0>
56 for (
int i = 0; i < dimensions; ++i) {
62 size_t get(
int dimension)
const {
85 for (
int i = 0; i < dimensions; ++i) {
96 for (
int i = 0; i < dimensions; ++i) {
107 #ifndef __SYCL_DEVICE_ONLY__
108 if (dimension >= dimensions || dimension < 0) {
109 throw sycl::invalid_parameter_error(
"Index out of range",
110 PI_ERROR_INVALID_VALUE);
array(typename std::enable_if_t<(N==1), size_t > dim0=0)
array(typename std::enable_if_t<(N==2), size_t > dim0, size_t dim1)
array< dimensions > & operator=(const array< dimensions > &rhs)=default
bool operator==(const array< dimensions > &rhs) const
size_t operator[](int dimension) const
size_t common_array[dimensions]
array(array< dimensions > &&rhs)=default
bool operator!=(const array< dimensions > &rhs) const
array(typename std::enable_if_t<(N==3), size_t > dim0, size_t dim1, size_t dim2)
array(const array< dimensions > &rhs)=default
size_t & operator[](int dimension)
size_t get(int dimension) const
array< dimensions > & operator=(array< dimensions > &&rhs)=default
__SYCL_ALWAYS_INLINE void check_dimension(int dimension) const
A unique identifier of an item in an index space.
#define __SYCL_ALWAYS_INLINE