#include "tensorstore/strided_layout.h"
template <DimensionIndex SubRank = dynamic_rank,
          DimensionIndex R,
          ArrayOriginKind O,
          ContainerKind C>
  
requires (SubRank == dynamic_rank)
StridedLayoutView<
    
RankConstraint::Subtract(RankConstraint::FromInlineRank(R),
                             SubRank),
    O>
tensorstore::GetSubLayoutView(const StridedLayout<R, O, C>& layout,
                              
DimensionIndex sub_rank);
template <DimensionIndex SubRank,
          DimensionIndex R,
          ArrayOriginKind O,
          ContainerKind C>
  
requires (SubRank != dynamic_rank)
StridedLayoutView<
    
RankConstraint::Subtract(RankConstraint::FromInlineRank(R),
                             SubRank),
    O>
tensorstore::GetSubLayoutView(
    
const StridedLayout<R, O, C>& layout,
    
std::integral_constant<DimensionIndex, SubRank> sub_rank = {});

Returns a view with the leading sub_rank dimensions of layout removed.

Template Parameters:
DimensionIndex SubRank = dynamic_rank
DimensionIndex SubRank

Specifies the number of leading dimensions to remove at compile time, or dynamic_rank to specify the number of dimensions at run time.

Parameters:
const StridedLayout<R, O, C> &layout

The existing layout.

DimensionIndex sub_rank
std::integral_constant<DimensionIndex, SubRank> sub_rank = {}

Specifies the number of leading dimensions to remove. Optional if SubRank != dynamic_rank.

Returns:

A view that references the same memory as layout.