在此示例代码中:
explicit MyClass(std::wstring text) noexcept;
这里noexcept
的使用是否正确? wstring
可能会抛出构造,但抛出是在我们进入构造函数之前还是在构造函数中时?
编辑:假设这可以推广到任何采用按值参数的函数。
答案 0 :(得分:21)
函数参数的构造和销毁发生在调用者的上下文中。所以不,如果构造text
抛出,那不违反noexcept
。
很快人们会发表评论并要求提供规格报价:)所以我会给你5.2.2p4
每个参数的初始化和销毁都发生在上下文中 调用功能。