-
#include "tensorstore/cast.h"
-
template <typename TargetElementType,
int&... ExplicitArgumentBarrier,
typename ElementType,
DimensionIndex Rank,
ReadWriteMode Mode>
auto tensorstore::Cast(
TensorStore<ElementType, Rank, Mode> store,
StaticDataType<TargetElementType> target_dtype = {}); -
template <int&... ExplicitArgumentBarrier,
typename ElementType,
DimensionIndex Rank,
ReadWriteMode Mode>
Result<TensorStore<void,
Rank,
(Mode == ReadWriteMode::read_write
? ReadWriteMode::dynamic
: Mode)>>
tensorstore::Cast(TensorStore<ElementType, Rank, Mode> store,
DataType target_dtype); Returns a view of a
TensorStore
with a converted data type.The returned
TensorStore
supports read/write mode if, and only if, the inputstore
supports the same mode and the necessary conversion is defined.For example:
TensorStore<int32_t, 2, ReadWriteMode::read_write> a = ...; // type: TensorStore<int64_t, 2, ReadWriteMode::read_write> auto b = Cast<int64_t>(a); // Supports both reading and writing, since `int32 <-> int64` conversion // is supported in both directions. // type: TensorStore<std::string, 2, ReadWriteMode::read> auto c = Cast<std::string>(a); // Supports reading only, since `int32 -> string` conversion is // supported but `string -> int32` is not. TensorStore<std::string, 2, ReadWriteMode::read_write> d = ...; // type: TensorStore<std::string, 2, ReadWriteMode::write> auto d = Cast<int32_t>(d); // Supports writing only, since `int32 -> string` conversion is // supported but `string -> int32` is not.
- Template Parameters:¶
- typename TargetElementType¶
The target element type, must be unqualified.
- Parameters:¶
- TensorStore<ElementType, Rank, Mode> store¶
The TensorStore to convert.
- StaticDataType<TargetElementType> target_dtype = {}¶
- DataType target_dtype
May be specified in order to allow
TargetElementType
to be inferred.
- Error absl::StatusCode::kInvalidArgument:¶
if neither reading nor writing would be supported by the returned
TensorStore
.