title: Why only string view?
body: <p>C++17's string view gives developers a way to pass around cheap non-owning references to a string that can actually be <a href="https://stackoverflow.com/questions/40127965/how-exactly-stdstring-view-is-faster-than-const-stdstring?rq=1">faster than <code>const std::string&amp;</code></a>. I might be naive, but this sounds pretty similar to Java's built-in mechanic to copy <em>references</em> 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++, <code>string_view</code> is explicit in a program like so:</p>
  
  <pre><code>void retrieve_an_object (string_view sv) {
  }
  </code></pre>
  
  <p>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?</p>