gpt4 book ai didi

c++ - 为什么 std::function 在 C++11 中不隐式转换为 bool?

转载 作者:太空狗 更新时间:2023-10-29 20:10:29 25 4
gpt4 key购买 nike

<分区>

考虑以下代码。

#include <functional>

int main(void)
{
std::function<void()> f1;
if (f1) { /* ok */
...
}

bool b = f1; /* compile-error */
bool B = !f1; /* ok */
...
}

std::function<>在某些情况下隐式转换为 bool,但并非在所有情况下。将其分配给 bool -variable 不起作用,而操作的结果或在 if() 中使用它-声明是正确的。

为什么会这样?看来我们必须对其进行 bool 运算,然后才能进行转换。

我为使工作成为 b = f1 所做的工作-line 是好的 ol' double bang:!! .在如此现代的 C++ 代码中,它看起来像古董。

编辑:这也编译:

bool b = f1 || f1; /* OK */

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com