MSDN和其他地方都说uninitialized_copy
提供了强大的异常保证,但其他C++ 引用却没有。
这实际上是由 C++ 保证的,还是不保证的?
是的,C++03 确实提供了这种保证,但值得仔细检查您的实现。
从我的机器上的草稿副本,20.4.4:
在以下算法中用作形式模板参数的所有迭代器都必须
operator*
返回一个定义了 operator& 的对象并返回一个指向 的指针T
。
在算法uninitialized_copy
中,形式模板参数InputIterator
需要满足输入迭代器(24.1.1)的要求。
在以下所有算法中,形式模板参数ForwardIterator
既要满足前向迭代器(24.1.3)的要求,又要满足可变迭代器(24.1)的要求,并且要求具有无异常的性质从有效迭代器的递增、赋值、比较或取消引用中抛出。
在以下算法中,如果抛出异常,则不会产生任何影响。
uninitialized_copy
(ETC。)
所以是的,这意味着您在某些页面上看到的“可能的实现”可能是不正确的。