#ifndef CK_STATICALLY_INDEXED_ARRAY_HPP #define CK_STATICALLY_INDEXED_ARRAY_HPP #include "functional2.hpp" #include "sequence.hpp" #include "tuple.hpp" namespace ck { namespace detail { template __host__ __device__ constexpr auto generate_same_type_tuple() { return generate_tuple([](auto) -> T { return T{}; }, Number{}); } template using same_type_tuple = decltype(generate_same_type_tuple()); } // namespace detail template using StaticallyIndexedArray = detail::same_type_tuple; 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