uninitialized_copy() 异常安全吗?

Is uninitialized_copy() exception-safe?

本文关键字:安全 异常 copy uninitialized      更新时间:2023-10-16

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(等)

所以是的,这意味着您在某些页面上看到的"可能的实现"可能是不正确的。