title: Are concepts with only a boolean literal value ill-formed, no diagnostic required?
body: <p>I was playing around with C++ concepts and function overloading in a context completely removed from any templates, and stumbled upon this:</p>
  <pre class="lang-cpp prettyprint-override"><code>struct S
  {
      int mult(int x) requires (true)  { return x; }
      int mult(int x) requires (false) { return x * 2; }
  };
  
  int main()
  {
      std::cout &lt;&lt; S{}.mult(5) &lt;&lt; std::endl;
  }
  </code></pre>
  <p>g++ 11 refuses to compile this snippet because <code>requires</code>-clauses may not be attached to non-template functions.</p>
  <p>clang++ 13 is, however, fine with this snippet, but surprisingly spits out <code>10</code> instead of the <code>5</code> that I expected.</p>
  <p>I know that the C++20 standard has only recently come out of the oven, so I completely understand that there are many issues to be worked out regarding concepts.</p>
  <p>Disregarding the apparent uselessness of constant literal concepts, my question is: <strong>Are programs with <code>requires</code>-clauses which are always <code>false</code> ill-formed, possibly without requiring a diagnostic?</strong> Or, perhaps, is what I have not even legal C++ at all, as g++ is saying?</p>