Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why only string view?

Tags:

c++

C++17's string view gives developers a way to pass around cheap non-owning references to a string that can actually be faster than const std::string&. I might be naive, but this sounds pretty similar to Java's built-in mechanic to copy references of an object. Built-in wrappers like Integer and String are immutable. Java's "reference" mechanic gives you a guarantee that these objects will hold the same value throughout the lifetime of a program. The difference is in C++, string_view is explicit in a program like so:

void retrieve_an_object (string_view sv) {
}

This is more self-documenting than Java's surprising (to C++ developers) mechanic. But surely it is a huge burden to the standard and library writers to write a view class for every conceivable class in C++. Could C++ perhaps have a more dedicated way of marking objects as "view only" without having to write an entire class and if so, why has this been removed from consideration?

like image 850
user7768039 Avatar asked Sep 19 '26 16:09

user7768039


1 Answers

The view classes (string_view, array_view) are meant to give (read only) access to parts of the object they are presenting.
It’s like a const & with additional information about a different beginning and end.

C++ has a dedicated way for view only objects: const &. (as well as std::reference_wrapper<const T>)

If you only want to give access to specific parts of some data structure you need a dedicated view class which knows what parts should be made available, this is not really generalizable per se.

like image 101
Darklighter Avatar answered Sep 22 '26 06:09

Darklighter



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!