#include <functional>
struct T {
explicit operator bool() { return true; }
};
int main() {
T t;
if(t) {} // OK
auto l = [&]() {
if (t) {} // Error
};
}
MSVC 的行为在这里似乎奇怪地不一致; OK 行和 Error 行之间的唯一区别是它们在 lambda 中。这是错误吗?
最佳答案
Is this a bug?
是的,绝对是。您的程序没有任何问题,bool
转换运算符在两种情况下都应被调用。
关于c++ - 未在 lambda 内部调用显式运算符 bool — MSVC 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16467780/