我正在编写一些测试代码,并想为模板函数指定
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 中有替代方案吗?或者我们可以继续使用该构造吗?
蒂亚
noexcept(false)
将指定一个潜在的抛出函数。noexcept(true)
或只是 noexcept
将指定一个非抛出函数。