c++ - C++ 标准库类型是否实现异常安全的复制赋值?

标签 c++ exception stl

我最近开始欣赏 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/

相关文章:

c++ - 带参数列表初始化的模板实参推导

c++ - 如何在 Visual Studio 2013+ 中编译包含 "interface"作为变量名的程序

'try' 未捕获的异常

c++ - 如何根据 C++ 中可变大小的模板模板列表获取元组?

c++ - 访问由 std::shared_ptr 包装的类的运算符重载

c++ - Qt电话总是拨同一个号码

c++ - 如何在运行时调整 dlib 神经网络隐藏层的大小?

java的setColor导致非法参数异常或断言被跳过

c# - 为什么添加新属性后 BinaryFormatter 不抛出异常?

c++ - VC++ 2010 "array is not a member of std"错误