【发布时间】:2015-04-26 12:47:01
【问题描述】:
以下sn-p的行为是否定义明确?
std::exception_ptr eptr;
try {
...
} catch (...) {
eptr = std::current_exception();
}
std::exception_ptr eptr2(eptr);
std::vector<std::exception_ptr> eptrs{eptr, eptr2};
for (auto& exc: eptrs) try {
std::rethrow_exception(exc);
} catch(std::exception& e) {
std::cout << e.what() << '\n';
}
如果是这样,这是否要求异常对象本身(不仅仅是 exception_ptr)是可复制的?
【问题讨论】:
-
但是当我们重新抛出 exception_ptr 的两个实例之一并抛出底层异常时,它是原始异常的副本吗?因为还有第二个 exception_ptr 实例包含原始异常。