c++ - 未在 lambda 内部调用显式运算符 bool — MSVC 错误?

标签 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 中。这是错误吗?

最佳答案

Is this a bug?

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

关于c++ - 未在 lambda 内部调用显式运算符 bool — MSVC 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16467780/

相关文章:

c++ - 如何在 mfc sdi 主窗口中添加编辑框和按钮?

c++ - 与换行窗口 C++ 比较

c++ - 使用嵌套结构时是否有任何性能损失?

c++ - 当 [] 运算符失败并且我需要对此断言时会发生什么?

visual-c++ - 比较 TCHAR 和 VC++ 中的字符串值?

c# - Expression<Func<..>>.Compile() 的实际类型是什么?

C++代码交叉编译到ARM,运行时崩溃

c++ - 将 int 矩阵数组放入 C++ 对象时出现问题

c++ - 如何在不重载 `std::multiset` 、 `operator()` 、 `std::less` 的情况下为 `std::greater` 提供自定义比较器?

ruby - 本地跳转错误 : unexpected return