#include "tensorstore/index_space/transformed_array.h"
template <DimensionIndex R,
         
 ArrayOriginKind O,
         
 ContainerKind AC,
         
 typename T>
  
requires IsIndexTransform<std::remove_cvref_t<T>>
Result<IndexTransform<std::remove_cvref_t<T>::static_input_rank,
                     
 RankConstraint::FromInlineRank(R)>>
tensorstore::ComposeLayoutAndTransform(
    
const StridedLayout<R, O, AC>layout,
    
T&transform);

Returns an index transform composed from a strided layout and an existing index transform.

The domain of layout is propagated to transform using PropagateBounds.

The lower and upper bounds of the returned transform are explicit.

Returns:

The composed IndexTransform on success, or an error from PropagateBounds on failure.

Error absl::StatusCode::kInvalidArgument:

if layout.rank() does not equal transform.output_rank().