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?
std::string, but a view of a contiguous sequence of characters. It has most of the thestd::stringinterface because that's consistent.const type&is the fastest way to provide a view only interface to a class.string_viewis special because you use it when you don't have astd::string.