#include "tensorstore/array.h"
template <typename SourceElement,
          DimensionIndex SourceRank,
          ArrayOriginKind SourceOriginKind,
          typename DestElement,
          DimensionIndex DestRank,
          ArrayOriginKind DestOriginKind>
constexpr bool tensorstore::IsArrayExplicitlyConvertible =
    IsElementTypeExplicitlyConvertible<SourceElement, DestElement> &&
    RankConstraint::EqualOrUnspecified(SourceRank, DestRank) &&
    IsArrayOriginKindConvertible(SourceOriginKind, DestOriginKind);

Bool-valued metafunction that determines whether a (SourceElement, SourceRank, SourceOriginKind) tuple is potentially convertible to a (DestElement, DestRank, DestOriginKind) tuple, based on IsElementTypeExplicitlyConvertible, RankConstraint::EqualOrUnspecified and IsArrayOriginKindConvertible.