namespace std {
template <class E>
exception_ptr make_exception_ptr(E e) noexcept;
}
概要
引数の例外オブジェクトを元にexception_ptr
オブジェクトを生成する。
効果
try {
throw e;
} catch(...) {
return current_exception();
}
戻り値
例外オブジェクトe
を指すexception_ptr
オブジェクトを返す。
例外
投げない
例
#include <iostream>
#include <exception>
#include <stdexcept>
int main()
{
std::exception_ptr p = std::make_exception_ptr(std::runtime_error("error!!!"));
try {
std::rethrow_exception(p);
}
catch (std::runtime_error& e) {
std::cout << e.what() << std::endl;
}
}
出力
error!!!
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅
実装例
template <class E>
exception_ptr make_exception_ptr(E e) noexcept
{
try {
throw e;
}
catch (...) {
return current_exception();
}
}