title: Non type template parameter of type std::string& compiles in gcc but not in clang
body: <p>I am learning C++ using the books listed <a href="https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list">here</a>. In particular, I learnt that we cannot use <code>std::string</code> as a non-type template parameter. Now, to further clear my concept of the subject I tried the following example which compiles in gcc and msvc but not in clang. <a href="https://godbolt.org/z/rdKexW9fE" rel="noreferrer">Demo</a></p>
  <pre><code>std::string nameOk[] = {&quot;name1&quot;, &quot;name2&quot;};
  template&lt;std::string &amp;name&gt;
  void foo()
  {
     
  }
  int main()
  {
      
      foo&lt;nameOk[0]&gt;(); //this compiles in gcc and msvc but not in clang in C++20  
  }
  </code></pre>
  <p><strong>My question is</strong> which compiler is right here(if any). That is, is the program well-formed or IFNDR.</p>