获取对std::exception_ptr持有的std::exception的引用

我正在尝试获取std::exceptionstd::exception_ptr.

这是我尝试过的:

#include <iostream>

using namespace std::literals;

auto unwrap(std::exception_ptr ptr) -> const std::exception &
{
    try {
        std::rethrow_exception(ptr);
    } catch (std::exception &e) {
        return e;
    }
}

int main()
{
    const auto ptr = std::make_exception_ptr(std::runtime_error{"test"});
    const auto &exp = unwrap(ptr);
    std::cout << exp.what() << std::endl;
    return 0;
}

使用 GCC,标准输出显示“测试”,这正是我所期望的。但是,对于 MSVC 2019,标准输出显示“未知异常”。

我的源代码中是否有任何未定义、未指定或依赖于实现的行为?或者,它是编译器/标准库实现错误吗?

以上是获取对std::exception_ptr持有的std::exception的引用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>