-std = c ++ 0xオプションを使用して、gcc4.4.6でunique_ptrを有効にしました。それは非常にうまく機能しているようで、まさに私が必要としていたものです-カスタム削除機能を備えたスコープポインター。
しかし、私は問題に気づきました。
typedef std::unique_ptr<X> XPtr;
XPtr ptr1(new X);
XPtr ptr2(new X);
std::cout << "ptr1 points to " << ptr1 << std::endl;
std::cout << "ptr2 points to " << ptr2 << std::endl;
表示:ptr1は1を指しますptr2は1を指します
ostreamインサーターがbool値を挿入していると思います。
以下はそれを修正しますが、これが標準ライブラリの一部であってはならないのではないかと思います。
template<typename Target, typename Deleter>
std::ostream & operator <<( std::ostream & out, const std::unique_ptr<Target, Deleter> & value)
{
// output the raw pointer
out << value.get();
return out;
}
したがって、問題は次のとおりです。これは、gccでの現在のunique_ptr実装の制限ですか、それともunique_ptrに期待しすぎていますか?