gpt4 book ai didi

C++ ISO noexcept 的 noexcept

转载 作者:IT老高 更新时间:2023-10-28 12:45:16 26 4
gpt4 key购买 nike

the C++ standard有如下定义:

template <class T, size_t N> void swap(T (&a)[N], T (&b)[N])
noexcept(noexcept(swap(*a, *b)));

noexcept(noexcept(swap(*a, *b))) 是做什么的?

最佳答案

拥有 noexcept(x) specifier在函数声明中意味着当且仅当 x 计算结果为 true 时该函数是不抛出的。

noexcept(y) 也可以用作operator ,如果 y 是非抛出表达式,则评估为 true,如果 y 可能抛出,则评估为 false

结合起来,这意味着 void foo() noexcept(noexcept(y)); 的意思是:foo 正好在 y 时不抛出是非 throw 的。

在问题的情况下,当且仅当交换数组的单个成员是非抛出时,数组的函数模板 swap 才被声明为非抛出,这是有道理的。

关于C++ ISO noexcept 的 noexcept,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com