gpt4 book ai didi

c++ - 为 std::exception_ptr 隐式转换为 book

转载 作者:行者123 更新时间:2023-11-27 23:54:23 26 4
gpt4 key购买 nike

我正在编写一些需要缓存异常的代码。

请考虑

int main()
{
std::exception_ptr ex;
bool b = ex;
}

由于 ex 无法转换为 bool 类型,因此无法编译。我目前的解决方法是写

bool b = !!ex;

甚至

bool b = ex ? true : false;

第一种方式很丑陋,第二种方式肯定是同义反复。我开始责怪编译器(MSVC2015)。两件事:

  1. 是否有更好的方法来检查 ex 是否已设置为异常?

  2. (相关)我需要以某种方式初始化 ex 吗?

最佳答案

阅读the documentation .

禁止隐式转换,但不禁止显式转换。

std::exception_ptr is not implicitly convertible to any arithmetic, enumeration, or pointer type. It is contextually convertible to bool, and will evaluate to false if it is null, true otherwise.

因此它在您显式转换表达式时有效,但在您尝试隐式转换时无效,即在 bool copy-initialization 中。

更好的解决方案是直接初始化bool:

bool b{ex};

您的 P45 在邮寄中;希望您会在下一份工作中查阅文档。 ;)

关于c++ - 为 std::exception_ptr 隐式转换为 book,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43741546/

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