#ifndef CK_STATICALLY_INDEXED_ARRAY_HPP #define CK_STATICALLY_INDEXED_ARRAY_HPP #include "functional2.hpp" #include "sequence.hpp" #include "tuple.hpp" namespace ck { template struct StaticallyIndexedArray { }; template struct StaticallyIndexedArray : public Tuple<> { using data_type = T; using base = Tuple<>; __host__ __device__ explicit constexpr StaticallyIndexedArray() : base() {} }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template struct StaticallyIndexedArray : public Tuple { using data_type = T; using base = Tuple; template __host__ __device__ explicit constexpr StaticallyIndexedArray(Ys&&... ys) : base(static_cast(ys)...) { } }; template __host__ __device__ constexpr auto make_statically_indexed_array(const X& x, const Xs&... xs) { return StaticallyIndexedArray(x, static_cast(xs)...); } // make empty StaticallyIndexedArray template __host__ __device__ constexpr auto make_statically_indexed_array() { return StaticallyIndexedArray(); } } // namespace ck #endif