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

4

1 回答 1

5

这是一个错误吗?

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

于 2013-05-09T17:41:01.113 回答