時折、一瞬の瞬間に、私はauto_ptrが涼しいと思う。しかし、ほとんどの時間私はそれが無関係にするはるかに簡単なテクニックがあることを認識します。たとえば、オブジェクトが自動的に解放されるようにするには、例外がスローされても、オブジェクトを新規に作成してauto_ptrに割り当てることができます。とてもかっこいい!しかし、より簡単に私のオブジェクトをローカル変数として作成し、スタックがそれを世話できるようにすることができました。let's go of auto_ptr
このように、私はgoogle C++ coding standardsがauto_ptrの使用を禁止しているのを見たときに驚きませんでした。 Googleでは、代わりにscoped_ptrを使用する必要があると述べています(スマートポインタが必要な場合)。
私の経験とは逆に、auto_ptrがであるか、またはのものを使用しているかの確かな理由があるかどうかを知りたいですか?もしそうでなければ、私はそれを自分で使うことを禁止すると思う。
アップデート:懸念を表明した人のために、私はGoogle標準を採用していません。たとえば、Googleのアドバイスに対して、私は例外処理を有効にする必要があることに同意します。また、私が作成したprintable enumのようなプリプロセッサマクロの使用も好きです。それは私を打つauto_ptrの話題です。
update2:私の答えは、以下のレスポンダのうちの2人であり、note from Wikipediaです。最初に、Herb Sutterは有効な使い方を示しました(ソースシンクのイディオムと生涯リンクされたオブジェクトの構成)。第二に、TR1とブーストが利用できない、または禁止されている店があり、C++ 03のみが許可されています。第3に、Wikipediaによると、C++ 0x仕様はauto_ptrを非難し、それをunique_ptrに置き換えています。ですから、私の答えは:Sutterが描いているケースに対してauto_ptrを使ってください。
Googleのスタイルガイドも禁止しています。誰かが間違ってしまい、Googleのスタイルガイドがそれらを禁止するので、例外を禁止するのだろうか? No. – sharptooth
はGoogleのガイドラインに準拠していません。一般的に、それらは固有のものであり、巨大なCコードベースとの統合が必要です。 (ただし、 'auto_ptr'を使わない理由はたくさんあります)。もし可能ならば –