#include <iostream>
void IsTrue(const bool value) {
  if (value) {
    std::cout << "value is True!\n";
  }
}
int main()
{
  IsTrue([]() { ; /* some lambda */ });
  return 0;
}
Вывод:
value is True!
Почему лямбда оценивается до true на GCC и Clang? MSVC не может построить это (не может преобразовать lambda в bool).
Это ошибка компилятора? Или какой пункт стандарта позволяет это?