title: Why does a lambda convert to a bool whose value is true?
body: <pre><code>#include &lt;iostream&gt;
  
  void IsTrue(const bool value) {
    if (value) {
      std::cout &lt;&lt; "value is True!\n";
    }
  }
  
  int main()
  {
    IsTrue([]() { ; /* some lambda */ });
  
    return 0;
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>value is True!
  </code></pre>
  
  <p>Why does the lambda evaluate to <code>true</code> on GCC &amp; Clang? MSVC cannot build this (cannot convert lambda to bool).</p>
  
  <p>Is it a compiler bug? Or which paragraph of the standard allows this?</p>