Type traits#

Tensor type categories#

template<typename Tensor>
concept immutable_tensor#
template<typename Tensor, typename T>
concept immutable_tensor_t#
#include <concept.h>

Ensures that the tensor of a given value type, so a binary operation (for example, a Hadamard product) could be computed on tensors of the same value type, and never on tensors of different types (meaning, no automatic type cast).

template<typename Tensor, typename T>
concept immutable_tensor1_t#
template<typename Tensor, typename T>
concept immutable_tensor2_t#
template<typename Tensor, typename T>
concept immutable_tensor3_t#
template<typename Tensor, typename T>
concept immutable_tensor4_t#
template<typename Tensor, typename T>
concept immutable_hardware_tensor_t#
template<typename Tensor, typename T, std::size_t N>
concept is_future_tensor_v#
template<typename Tensor, typename T>
concept is_future_tensor1_v#
template<typename Tensor, typename T>
concept is_future_tensor2_v#
template<typename Tensor, typename T>
concept is_future_tensor3_v#

Tensor transformations#

template<immutable_tensor Tensor, contiguous_container Container>
struct change_tensor_container#
template<immutable_tensor Tensor, contiguous_container Container>
using metalchat::change_tensor_container_t = typename change_tensor_container<Tensor, Container>::type#
template<immutable_tensor Tensor, std::size_t N>
struct change_tensor_dimensions#
template<immutable_tensor Tensor, std::size_t N>
using metalchat::change_tensor_dimensions_t = typename change_tensor_dimensions<Tensor, N>::type#