以下代码段的行为是否定义良好?重新计算包含相同异常的exception_ptr的多个实例
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实例。 – CppNoob