生のポインターからスマート ポインターに移行することにしたので、http://en.cppreference.com/w/cpp/memory/auto_ptrを読むことから始めることができます。
そこでは、彼らがに特化していることがわかりましたvoid。
どうしてこれなの?どんな場面でも役に立ちますか?
生のポインターからスマート ポインターに移行することにしたので、http://en.cppreference.com/w/cpp/memory/auto_ptrを読むことから始めることができます。
そこでは、彼らがに特化していることがわかりましたvoid。
どうしてこれなの?どんな場面でも役に立ちますか?
これはLWG 541で行われました。問題には完全な根拠があります。しかし、要するに、それは当時のものとの互換性のために行われましたstd::tr1::shared_ptr(後に に標準化されましたstd::shared_ptr)。
生のポインターからスマート ポインターへの移行を検討している場合はunique_ptr、 を優先して使用することを強くお勧めしますauto_ptr。 auto_ptrは非推奨であり、正当な理由があります。 unique_ptrの推奨代替品ですauto_ptr。
auto_ptrこれは、 を非推奨にし、 に置き換える理由を説明するリンクunique_ptrです。
std::auto_ptrC++11 から廃止されました。代わりにstd::shared_ptrandのような他のスマート ポインターを検討することを検討してください。unique_ptr
あなたの質問に対する答えは (私が知る限り):内部の raw ポインターのメモリを解放するためにstd::auto_ptr使用しますが、void は不完全な型であり、オブジェクトの型になることはできないため、削除はまったく意味がありません。削除する前に、ポイントされたデータの対応するタイプに void* をキャストする必要があります。したがって、このスマート ポインターは、機能の少ない特殊化を提供します (参考文献では、void 特殊化にはメンバー関数がないことが示されていることに注意してください)。deletevoid*void