У меня есть функция, которая возвращает указатель и длину, и я хочу вызвать std::string::assign(pointer, length)
. Должен ли я делать специальный случай (вызов clear
), когда длина равна нулю, а указатель может быть nullptr?
В стандарте С++ говорится:
21.4.6.3 basic_string::assign
basic_string& assign(const charT* s, size_type n);
Requires: s points to an array of at least n elements of charT.
Итак, что, если n
равно нулю? Что такое массив нулевых символов и как он указывает на него?
Действительно ли для вызова
s.assign(nullptr, 0);
или это поведение undefined?
Реализация libstdС++, по-видимому, не вызывает разыменования указателя s
, когда размер n
равен нулю, но это вряд ли гарантирует.