C++20:一个关于动态异常规范的问题

问题描述 投票:0回答:1

参考:动态异常规范(C++17之前)

我正在编写一些测试代码,并想为模板函数指定

std::bad_alloc
(std::bad_alloc) 类型的抛出异常,该函数将尝试动态分配内存以合并两个 T 类型的排序数组:

template<typename T, size_t N>
std::unique_ptr<std::array<T,N>>merge2SortedArrays(std::array<std::array<T,N>,2>) throw(bad_alloc);

目标是函数模板的用户应该知道,如果内存分配失败,可能会导致

bad_alloc
异常,并且应该在调用代码中具有相应的 catch 块来处理此问题。

我使用

g++
进行编译并使用编译时标志
-std=c++20

在上面与动态异常规范相关的链接中,已声明此构造仅在 C++17 之前受支持。

那么 C++20 中有替代方案吗?或者我们可以继续使用该构造吗?

蒂亚

c++ exception dynamic c++20 specifications
1个回答
0
投票
  • noexcept(false)
    将指定一个潜在的抛出函数。
  • noexcept(true)
    或只是
    noexcept
    将指定一个非抛出函数。
© www.soinside.com 2019 - 2024. All rights reserved.