Boost logo

Boost :

From: Marshall Clow (mclow.lists_at_[hidden])
Date: 2022-05-13 22:16:19


On May 13, 2022, at 12:29 PM, Rainer Deyke via Boost <boost_at_[hidden]> wrote:
>
> On 13.05.22 20:39, Marshall Clow via Boost wrote:
>> On May 13, 2022, at 11:18 AM, Peter Dimov via Boost <boost_at_[hidden]> wrote:
>>> In what scenarios will it not give you a null-terminated string?
>> char arr[6] = “hello";
>> cstring_view csv(arr);
>> assert(strlen(csv.data())) == 5);
>> arr[5] = ‘!’;
>> assert(strlen(csv.data())) == 5); // boom
>> — Marshall
>> PS. It promises to give you a null-terminated string, but has no way to actually guarantee that.
>
> That's an issue with views in general, not just cstring_view.
>
> std::string s = "hello";
> string_view sv = s;
> assert(sv.size() == 5);
> s += "!";
> assert(sv.size() == 5); // boom

I don’t see the problem here (and when I run the code I get no error - after adding the missing ’std::').

No assertion failure; no undefined behavior (unlike the cstring_view example)

— Marshall


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk