title: Constructing istringstream with string_view doesn't compile
body: <p>I'm not able to provide a <code>std::string_view</code> to <code>std::istringstream</code>'s constructor. The following code doesn't compile (C++17 enabled using Clang v8):</p>
  
  <pre><code>std::string_view val = "Hello";
  std::istringstream ss(val, std::ios_base::in);
  </code></pre>
  
  <p>The error I get is:</p>
  
  <pre><code>prog.cc:9:24: error: no matching constructor for initialization of 'std::istringstream' (aka 'basic_istringstream&lt;char&gt;')
      std::istringstream ss(val, std::ios_base::in);
                         ^  ~~~~~~~~~~~~~~~~~~~~~~
  /opt/wandbox/clang-6.0.0/include/c++/v1/sstream:651:14: note: candidate constructor not viable: no known conversion from 'std::string_view' (aka 'basic_string_view&lt;char&gt;') to 'const std::__1::basic_istringstream&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;::string_type' (aka 'const basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt;') for 1st argument
      explicit basic_istringstream(const string_type&amp; __s,
               ^
  </code></pre>
  
  <p>However this does:</p>
  
  <pre><code>std::string_view val = "Hello";
  std::istringstream ss(val.data(), std::ios_base::in);
  </code></pre>
  
  <p>This issue is weird to me because there's only 1 implicit conversion that should be happening here: <code>std::string_view</code> to <code>std::basic_string</code>. The constructor is taking a <code>basic_string</code> according to the error message.</p>
  
  <p>Why can't I use <code>string_view</code> verbatim here without calling <code>string_view::data()</code>?</p>