uninitialized_copy() 异常安全吗?
Is uninitialized_copy() exception-safe?
MSDN和其他地方说uninitialized_copy
提供了强大的异常保证,但其他C++引用没有。
这实际上是由C++保证的吗?
是的,C++03 确实提供了这种保证,但值得仔细检查您的实现。
从我机器上的草稿副本 20.4.4:
在以下算法中用作正式模板参数的所有迭代器都需要让其
operator*
返回为其定义了运算符的对象,并返回指向T
的指针。
在算法uninitialized_copy
中,形式化模板参数InputIterator
是满足输入迭代器(24.1.1)的要求所必需的。
在以下所有算法中,形式模板参数ForwardIterator
是满足前向迭代器 (24.1.3) 的要求和可变迭代器 (24.1) 的要求所必需的,并且需要具有不会因有效迭代器的增量、赋值、比较或取消引用而引发异常的属性。
在以下算法中,如果引发异常,则不会产生任何影响。
uninitialized_copy
(等)
所以是的,这意味着您在某些页面上看到的"可能的实现"可能是不正确的。
相关文章:
- C++代码中的异常安全
- 编写"anti-lack of memory"异常安全代码
- std:string::substr 异常安全吗?
- 如何以异常安全的方式使用放置新?
- 通过引用从 c++ 函数异常返回对象是否安全
- 异常安全服务器
- 实现 std::vector::p ush_back 强异常安全
- 标准::unique_ptr和异常安全
- 如何使用QThreads使无锁生产者-消费者线程交换更加异常安全
- 使功能异常安全
- 与构造函数参数相关的异常安全的习语
- uninitialized_copy() 异常安全吗?
- 为什么我们需要 RAII 来解决异常安全问题
- 异常安全构造函数
- 关于 swap() 操作的异常安全 - 这有什么问题?
- std::vector::擦除异常安全
- 异常安全 - 用于可靠回滚对象状态的模式
- 异常安全的 for 循环
- 异常安全代码和移动语义
- 向量::插入的异常安全保证是什么?