相关疑难解决方法(0)

为什么lambda会转换为值为true的bool?

#include <iostream>

void IsTrue(const bool value) {
  if (value) {
    std::cout << "value is True!\n";
  }
}

int main()
{
  IsTrue([]() { ; /* some lambda */ });

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

value is True!
Run Code Online (Sandbox Code Playgroud)

为什么lambda会评估trueGCC和Clang?MSVC无法构建此(无法将lambda转换为bool).

这是编译器错误吗?或者标准的哪一段允许这个?

c++ lambda boolean language-lawyer

47
推荐指数
1
解决办法
2040
查看次数

标签 统计

boolean ×1

c++ ×1

lambda ×1

language-lawyer ×1