这本书 C++ Concurrency in Action Anthony Williams 在 4.2.4 为将来保存异常 中指出,可以直接存储异常而无需使用 std::copy_exception
抛出。但是,我似乎无法找到定义 std::copy_exception
的标准库头文件。我在哪里可以找到它?
最佳答案
tl;博士:std::copy_exception
更名为 std::make_exception_ptr
在 <exception>
用于最终的 C++11 标准。
委员会决定将名称 copy_exception
(可能从 boost::copy_exception
复制到标准中)具有误导性,原因如下。
copy_exception
函数返回 exception_ptr
到它的论点的拷贝,好像
template <class E>
exception_ptr copy_exception(E e) {
try {
throw e;
} catch (...) {
return current_exception();
}
}
当使用 exception_ptr
调用时作为参数,该函数将返回另一个 exception_ptr
指向 exception_ptr
的拷贝作为参数给出,而不是指向 exception_ptr
论点指向。因为名字copy_exception
在这种情况下具有误导性,函数被重命名为 std::make_exception_ptr
用于最终的 C++11 标准。见 C++ Standard Library Defect Report 1130有关此问题的详细信息和讨论。
std::make_exception_ptr
函数定义在 <exception>
.
关于c++ - std::copy_exception 在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831458/