【发布时间】:2011-11-29 12:15:06
【问题描述】:
在此示例代码中:
explicit MyClass(std::wstring text) noexcept;
这里使用noexcept 正确吗? wstring 可能会在构造时抛出,但是抛出是在我们在构造函数中之前还是在我们在构造函数中时发生?
编辑:假设这可以推广到任何采用按值参数的函数。
【问题讨论】:
在此示例代码中:
explicit MyClass(std::wstring text) noexcept;
这里使用noexcept 正确吗? wstring 可能会在构造时抛出,但是抛出是在我们在构造函数中之前还是在我们在构造函数中时发生?
编辑:假设这可以推广到任何采用按值参数的函数。
【问题讨论】:
函数参数的构造和销毁发生在调用者的上下文中。所以不,如果text 的构造抛出,那不违反noexcept。
很快人们就会发表评论并要求提供规格报价 :) 所以我会给你 5.2.2p4
每个参数的初始化和销毁都发生在 调用函数。
【讨论】: