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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With