#include "tensorstore/array.h"
template <ArrayOriginKind TargetOriginKind,
         
 ContainerKind LayoutContainerKind = view,
         
 typename A>
  
requires IsArray<std::remove_cvref_t<A>> &&
          
 (!IsArrayOriginKindConvertible(
               
std::remove_cvref_t<A>::array_origin_kind,
              
 TargetOriginKind))
Result<Array<typename std::remove_cvref_t<A>::ElementTag,
            
 std::remove_cvref_t<A>::static_rank,
            
 TargetOriginKind,
            
 LayoutContainerKind>> tensorstore::
    
ArrayOriginCast(A&array);
template <ArrayOriginKind TargetOriginKind,
         
 ContainerKind LayoutContainerKind = view,
         
 typename A>
  
requires IsArray<std::remove_cvref_t<A>> &&
          
 (IsArrayOriginKindConvertible(
               
std::remove_cvref_t<A>::array_origin_kind,
              
 TargetOriginKind))
Array<typename std::remove_cvref_t<A>::ElementTag,
     
 std::remove_cvref_t<A>::static_rank,
     
 TargetOriginKind,
     
 LayoutContainerKind> tensorstore::ArrayOriginCast(A&array);

Converts an array to the specified origin kind.

Template Parameters:
ArrayOriginKind TargetOriginKind

Specifies the new origin kind. If equal to zero_origin and array.array_origin_kind == offset_origin, the array is translated to have a zero origin. Otherwise, the origin remains the same.

ContainerKind LayoutContainerKind = view

Specifies the new layout container kind. If equal to view, the layout of the returned array is only valid as long as array.layout().

Returns:

The adjusted array.

Error absl::StatusCode::kInvalidArgument:

if TargetOriginKind == zero_origin, array.array_origin_kind == offset_origin, and array.shape() contains an extent that exceeds kInfIndex (which would result in an upper bound outside the valid range for Index).