編集:私は言及すべきでした.Boostのドキュメントをptr_sequence_adapter
見ていましたが、それらのアダプターtemplate< class U > void push_back( ::std::auto_ptr<U> x );
は実行と同等でvec.push_back(autoPtr.release());
あり、強力な例外保証も提供すると主張しています. そして、実装が実際に何であったかについて、実装の効果に関する彼らの説明を混同していることに気付きました。したがって、この質問はほとんど無意味です。後世のためにここに残しておきます。
私には、への呼び出しstd::auto_ptr<t>
が成功し、への呼び出しがstd::vector<t*>::push_back
例外をスローし、ポインターがリークする可能性があるようです。
代わりにこれを行う必要があるようです:
vec.push_back(0); //Attempts to allocate space in vector, could throw bad_alloc
vec.back() = autoPtr.release(); //Provides nothrow