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

时间:2013-05-09 17:39:40

标签: c++ visual-c++ lambda

#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。这是一个错误吗?

1 个答案:

答案 0 :(得分:6)

  

这是一个错误吗?

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