gsl::multi_span 有什么用?

What is gsl::multi_span to be used for?

C++ 核心指南提到跨度,而不是 "multi-spans"。但是 - 我看到微软的 GSL 实现有一个 multi_span class

template <
    typename ValueType,
    std::ptrdiff_t FirstDimension,
    std::ptrdiff_t... RestDimensions
>
class multi_span { ... };

所以,显然这是 gsl::span 的某种多维版本。但那是什么意思呢?为什么我们需要这个多维跨度,或者更确切地说 - 我们什么时候使用它?我似乎找不到任何关于此的文档。

简而言之就是跨越连续的一块内存,代表多维数组。

这是一个使用示例:

int data[6] = {0, 1, 2, 3, 4, 5};
multi_span<int, 2, 3> span{data, 6};
std::cout << span[1][1] << '\n'; //Outputs 4

从链接源来看,它似乎也支持运行时边界,但我不确定这些语法是否正确。