title: c++17 Ambiguity when compare string_view with string
body: <p>I saw both <code>std::string_view</code> and <code>std::string</code> have symmetric <code>operator==()</code> and for <code>std::string</code> it has the constructor to accept <code>std::string_view</code> and operator to convert itself to <code>std::string_view</code>. So when we try to use <code>operator==()</code> compare between <code>std::string_view</code> and <code>std::string</code>, is it supposed to be ambiguous?</p>
  <p>I think there must be something wrong with my thoughts. Can anyone clarify?</p>
  <p>Example:</p>
  <pre class="lang-cpp prettyprint-override"><code>std::string s1 = &quot;123&quot;;
  std::string_view s2 = &quot;123&quot;;
  // in the following comparison, will s1 use the convert operator to generate a string_view, or will s2 use string's string_view constructor to generate a string?
  if (s1 == s2) {...}
  </code></pre>