title: How to properly use concepts?
body: <p>Currently, I am learning C++ and decided just start with C++20. However, these codes are driving me crazy, since I don't think the result makes any sense.</p>
  <p>The following code will have the sentence <code>Valid array.</code> printed.  What I meant above is that this is not right. It shouldn't print the sentence at all, since the type I inserted in the parameter doesn't match the concept.</p>
  <p>Tested on VS2022 Preview 3 and <a href="https://wandbox.org/" rel="nofollow noreferrer">an online compiler</a> with newest GCC and C++2A(GNU) arguments, generated the same results.</p>
  <pre><code>#include &lt;array&gt;
  #include &lt;cstdio&gt;
  #include &lt;iostream&gt;
  #include &lt;type_traits&gt;
  
  using namespace std;
  
  template&lt;typename A&gt; concept ProperArray = requires(A array)
  {
      {array.max_size() &gt;= 2U};
      {std::is_arithmetic_v&lt;typename A::value_type&gt; == true};
  };
  
  int main()
  {
      constexpr bool b = ProperArray&lt;array&lt;std::string, 1&gt;&gt;;
      if constexpr (b)
          cout &lt;&lt; &quot;Valid array.&quot; &lt;&lt; endl;
          
      std::cout &lt;&lt; &quot;Hello, Wandbox!&quot; &lt;&lt; std::endl;
  }
  </code></pre>