MSDN和other places表示uninitialized_copy
提供强大的异常保证,但other C ++引用don't。
这实际上是否由C ++保证?
答案 0 :(得分:2)
是的,C ++ 03确实提供了这种保证,但值得仔细检查。
从我在机器上的草稿中,20.4.4:
在以下算法中用作形式模板参数的所有迭代器都需要让
operator*
返回一个运算符&已定义并返回指向T
的指针 在算法uninitialized_copy
中,需要形式模板参数InputIterator
来满足输入迭代器(24.1.1)的要求。 在以下所有算法中,正式模板参数ForwardIterator
需要满足前向迭代器(24.1.3)的要求,并且还要满足可变迭代器(24.1)的要求,并且必须具有从有效迭代器的增量,赋值,比较或取消引用中抛出异常的属性 在以下算法中,如果抛出异常,则无效。
uninitialized_copy
(等)
是的,这意味着您在some pages上看到的“可能实施”可能不正确。