我已經使用-std = C++ 0x選項在gcc 4.4.6中啓用了unique_ptr。它似乎工作得很好,正是我所需要的 - 一個定製刪除器的範圍指針。std :: unique_ptr ostream插入器
但是我確實發現了一個問題。
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的插入器被插入所述布爾值。
以下修復它,但我想知道如果這不應該是標準庫的一部分。
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;
}
所以,問題是:這是海灣合作委員會目前的unique_ptr實施的限制,還是我從的unique_ptr期望太高了?
這不應該是這樣。 'unique_ptr'到'bool'的轉換應該標記爲'explicit'。 – pmr