MSDNや他の場所uninitialized_copy
では、これは強力な例外保証を提供すると言っていますが、他のC++参照はそうではありません。
これは実際にC++によって保証されていますか?
MSDNや他の場所uninitialized_copy
では、これは強力な例外保証を提供すると言っていますが、他のC++参照はそうではありません。
これは実際にC++によって保証されていますか?
はい、C ++ 03はこの保証を提供しますが、実装を再確認する価値があります。
私が自分のマシンに持っていたドラフトコピーから、20.4.4:
次のアルゴリズムで正式なテンプレートパラメータとして使用されるすべてのイテレータは、
operator*
operator&が定義されているオブジェクトを返し、へのポインタを返す必要がありますT
。
アルゴリズムでは、入力イテレータ(24.1.1)の要件を満たすためuninitialized_copy
に、正式なテンプレートパラメータが必要です。 以下のすべてのアルゴリズムでは、正式なテンプレートパラメーターは、フォワードイテレーター(24.1.3)の要件と、可変イテレーター(24.1)の要件を満たすために必要であり、例外がないというプロパティを持っている必要があります。有効なイテレータの増分、割り当て、比較、または逆参照からスローされます。次のアルゴリズムでは、例外がスローされても影響はありません。InputIterator
ForwardIterator
uninitialized_copy
(等。)
そうです、それは、一部のページに表示される「可能な実装」が正しくない可能性があることを意味します。