`gsl::string_span` 的目的是什么?

What purpose does `gsl::string_span` aim at?

在阅读 Microsoft's implementation of Cpp Core Guidelines 期间,我 运行 遇到了两个问题:

  1. 为什么在 gsl::span 已经运行良好的情况下提供 gsl::string_span
  2. 为什么在 std::string 自 C++11 起已保证以 null 终止的情况下提供 gsl::zstring_span

任何情况下的说明将不胜感激。

  1. span("Hi"){'H', 'i', '[=11=]'}string_span("Hi"){'H', 'i'}string_span 检查终止空字符并且不将其包含在跨度中。
  2. string 是拥有而 span 不是,所以比较它们就是比较苹果和橘子。 zstring_span 是一个跨度,其约束条件是最后一个字符是空字符。 spanstring_span 都没有这个限制。