以下代碼段的行爲是否定義良好?重新計算包含相同異常的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