Какую цель преследует `gsl::string_span`?
Читая реализацию Microsoft Cpp Core Guidelines, я столкнулся с двумя вопросами:
- Почему
gsl::string_span
при условии, гдеgsl::span
уже хорошо работает? - Почему
gsl::zstring_span
при условии, гдеstd::string
уже гарантированно будет нулевым символом с C++11?
Любые иллюстрирующие ситуации будут высоко оценены.
1 ответ
Решение
span("Hi")
является{'H', 'i', '\0'}
в то время какstring_span("Hi")
является{'H', 'i'}
,string_span
проверяет завершающий нулевой символ и не включает его в диапазон.string
есть, а промежутки - нет, поэтому сравнивать их - это сравнивать яблоки и апельсины.zstring_span
это диапазон с ограничением, что последний символ является нулевым символом. ниspan
ниstring_span
есть это ограничение.