【发布时间】:2010-11-19 21:22:42
【问题描述】:
我最近开始欣赏复制和交换习语,并一直在使用它来为任何管理资源的类实现复制分配。所以这让我想到了标准库类型:标准是否保证异常安全的行为?
例如,考虑一个包含一个std::string 数据成员的类。通常,我不会实现自己的复制分配等,但这安全吗?如果复制分配失败,标准是否保证 std::string 数据成员保持不变?在这种情况下实施复制和交换是否有益 - 还是太过分了?
【问题讨论】:
-
鉴于对于所有相关的编译器,它们被成千上万个重要程序使用,如果这些实现包含如此众所周知且可避免的缺陷,那将是非常尴尬和关键的......所以我只是假设标准库有效。
-
@delnan:我也是这么想的,然后我了解到
std::deque的 Microsoft/Dinkumware 实现是多么糟糕......