- 876 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:52:20 ]
- d = move(s)
の途中で例外が起こった場合、sとdの状態はどうなるんだろうか? std::vectorの再配置にしても例外安全の強い保証 (メソッドの途中で例外が発生してもオブジェクトの状態は以前と同じ) を行うなら、結局 1、新しいバッファを確保 2、それにすべてのオブジェクト内容をコピー 3、バッファ作成に成功したら、ポインタの挿げ替えを行う 4、古いバッファの削除 という手順を踏む必要があるんだけど・・・ 1、新しいバッファを確保 2、オブジェクト内容をmoveで移動 3、ポインタの挿げ替え&古いバッファの削除 とやってしまうと2の途中で例外が発生したときまずいことにならないか?
|

|