C++ 哪里定义了std::copy_异常?

C++ 哪里定义了std::copy_异常?,c++,c++11,exception,exception-handling,language-lawyer,C++,C++11,Exception,Exception Handling,Language Lawyer,安东尼·威廉姆斯(Anthony Williams)的书在4.2.4中指出,为了将来保存异常,可以直接存储异常,而无需使用std::copy_exception。但是,我似乎找不到定义了std::copy\u exception的标准库标题。我在哪里可以找到它;dr:std::copy_exception在中被重命名为std::make_exception_ptr,用于最终的C++11标准 委员会决定,名称复制例外情况(可能从复制到标准中)具有误导性,原因如下 copy_exception函数

安东尼·威廉姆斯(Anthony Williams)的书在4.2.4中指出,为了将来保存异常,可以直接存储异常,而无需使用
std::copy_exception
。但是,我似乎找不到定义了
std::copy\u exception
的标准库标题。我在哪里可以找到它;dr:
std::copy_exception
中被重命名为
std::make_exception_ptr
,用于最终的C++11标准


委员会决定,名称
复制例外情况
(可能从复制到标准中)具有误导性,原因如下

copy_exception
函数将
exception_ptr
返回到其参数的副本,就像

template <class E>
exception_ptr copy_exception(E e) {
    try {
        throw e;
    } catch (...) {
        return current_exception();
    }
}
模板
例外情况\u ptr副本\u例外情况(E){
试一试{
投掷e;
}捕获(…){
返回当前_异常();
}
}
当使用
exception\u ptr
作为参数调用时,该函数将返回另一个
exception\u ptr
,指向作为参数给定的
exception\u ptr
的副本,而不是指向
exception\u ptr
参数所指向的内容。由于名称
copy_exception
在本例中具有误导性,因此最终的C++11标准将函数重命名为
std::make_exception_ptr
。有关此问题的详细信息和讨论,请参见

std::make_exception\u ptr
函数在
中定义