我最近开始欣赏 copy-and-swap 习惯用法,并一直使用它来为任何管理资源的类实现复制分配。所以这让我开始思考标准库类型:标准是否保证异常安全行为?
例如,考虑一个包含一个 std::string
数据成员的类。通常,我不会实现自己的复制分配等,但这安全吗?如果复制分配失败,标准是否保证 std::string 数据成员保持不变?在这种情况下实现 copy-and-swap 是否有益——或者这太过分了?
最佳答案
该标准在“verse”21.4.1.2 中明确规定。除 std::bad length
之外的任何其他异常“均无效”。
关于c++ - C++ 标准库类型是否实现异常安全的复制赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4229489/