采取以下示例代码:

void test(const Item& item = Item()) {
   ...
}

假定一旦将item传递给该函数,就不能抛出该异常。

问题是:该函数应标记为noexcept还是noexcept(noexcept(Item()))

IHMO,前者应该可以,但我不确定。从标准的报价将不胜感激!

最佳答案

默认参数是函数调用者的快捷方式符号。因此,当函数执行时,构造已经完成。

因此,noexcept应该足够了。

standard [dcl.fct.default]状态中:



也有一个注释(在[intro.execution]程序执行中):

关于c++ - noexcept带有默认参数构造的说明符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50273336/

10-14 07:13