#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。这是一个错误吗?
答案 0 :(得分:6)
这是一个错误吗?
是的,当然。您的程序没有任何问题,在这两种情况下都应调用bool
转换运算符。