Какую цель преследует `gsl :: string_span`?

Во время чтения Реализация Microsoft из Cpp Core Guidelines, Я сталкиваюсь с двумя вопросами:

  1. Почему gsl::string_span при условии, где gsl::span уже хорошо работает?
  2. Почему gsl::zstring_span при условии, где std::string уже гарантированно будет нулевым символом с C ++ 11?

Любые иллюстрирующие ситуации будут высоко оценены.

1

Решение

  1. span("Hi") является {'H', 'i', '\0'} в то время как string_span("Hi") является {'H', 'i'}, string_span проверяет завершающий нулевой символ и не включает его в диапазон.
  2. string есть, а промежутки — нет, поэтому сравнивать их — это сравнивать яблоки и апельсины. zstring_span это диапазон с ограничением, что последний символ является нулевым символом. ни span ни string_span есть это ограничение.
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]