显式运算符bool里面没有调用lambda - MSVC bug?

4 c++ lambda visual-c++

#include <functional>

struct T {
    explicit operator bool() { return true; }
};

int main() {
    T t;

    if(t) {} // OK

    auto l = [&]() {
        if (t) {} // Error
    };
}
Run Code Online (Sandbox Code Playgroud)

MSVC的行为在这里看起来奇怪不一致; OK行和Error行之间的唯一区别是一个是lambda.这是一个错误吗?

And*_*owl 5

这是一个错误吗?

当然是.您的程序没有任何问题,bool在这两种情况下都应调用转换运算符.