さまざまな理由から、shared_ptrs の方が適している、一般的に参照されるポインター型を持つ大規模なレガシー コードベースがあります。
shared_ptrs は、NULL チェックを除く通常のポインターの簡単な置き換えです。コード全体で、これらのポインターに対して定期的な NULL チェックを行っており、shared_ptrs への変換後、これらの null チェックは常にパスします。
これらのケースを自動的に検出する良い方法はありますか? if (foo == NULL) // foo が boost::shared_ptr の場合?
まだ C++11 には対応していませんが、すぐに対応する予定です。
例:
// declared elsewhere as : boost::shared_ptr<T> foo;
if (NULL != foo) //always true when shared_ptr. Correct check when raw pointer
{
foo->DoSomething();
}