2013-02-22 89 views
0

全部reset functionsshared_ptr, auto_ptr, unique_ptr, boost::scoped_ptr返回void当他们真的可以返回对象本身的引用时,因为如果我重置了智能指针,那么很可能我会使用它。 (Maybe doubtful example.为什么重置返回无效?

即,无法重置被定义为

unique_ptr& reset(pointer ptr = pointer()); 

代替

void reset(pointer ptr = pointer()); 

注意:基本上reset,这实际上是一个“任务”应该只是在末尾返回*this*,就像operator=已经那样。 (这不是要返回旧值或某些值)。

+3

什么阻止你编写一个免费的函数呢? – 2013-02-22 11:10:27

+2

也许任何人提出unique_ptr认为它是一个好主意,鼓励不要把所有东西都塞进一行...... – PlasmaHH 2013-02-22 11:16:53

+2

对我来说似乎是一个合理的建议,因为'operator ='是一个类似的操作并返回相同的引用提议。除非在委员会中有一种感觉(尽管已经在C++标准中已经盛行),链式修改操作就是Inherently Bad,这可能只是错过了一个几乎没有人会用到的东西的机会,但大多没有伤害。有时候,某些不符合标准的原因是“没有人提出这个问题”,我很想知道这是否属于这种情况。 – 2013-02-22 11:42:17

回答

0

Boost图书馆经过审查过程。由于该评论,API是如此。您的选择是编写适配器类模板或您自己的共享指针类模板。由于代码经常很重,后面的选项可能不是一个坏主意。然后您将完全控制API。