【发布时间】:2012-05-18 04:01:04
【问题描述】:
我在 gcc 4.4.6 中使用 -std=c++0x 选项启用了 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 的期望过高?
【问题讨论】:
-
不应该这样。
unique_ptr到bool的转换应该标记为explicit。
标签: c++ c++11 ostream unique-ptr