采取以下示例代码:
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/