Является ли литерал std::string_view гарантированно завершающимся нулем?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли литерал std::string_view гарантированно завершающимся нулем?

Сообщение Anonymous »

Я знаю, что тривиальный std::string_view не обязательно будет завершаться нулем. Однако я не знаю, гарантированно литерал std::string_view будет завершаться нулем.

Например:

Код: Выделить всё

#include 

using namespace std::literals;

int main()
{
auto my_sv = "hello"sv;
}
Гарантирует ли C++17 или более позднюю версию, что my_sv.data() завершается нулем?
=== Ниже обновлено ===

Все приведенное ниже взято из n4820:

  • Согласно 5.13.5.14, строковый литерал завершается нулем.
  • Согласно версии 5.13.8, определяемый пользователем строковый литерал состоит из строкового литерала и пользовательского суффикса. Скажем, «hello»sv, hello — это строковый литерал, sv — это суффикс.
  • Согласно 5.13.8.5, «hello»sv рассматривается как вызов оператора формы «» sv(str, len); согласно 5.13 .5.14, str
    завершается нулем.
  • Согласно 21.4.2.1, data() sv должно return str.

Могут ли они доказать, что «hello»sv. data() гарантированно завершается нулем по стандарту C++?

Подробнее здесь: https://stackoverflow.com/questions/572 ... terminated
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»