当shared_ptr, auto_ptr, unique_ptr, boost::scoped_ptr
的所有reset
函数真的可以返回对对象本身的引用时,它们都会返回void
,因为如果我将智能指针重置为某个对象,我很可能会使用它。(也许是个可疑的例子。)
也就是说,不能重置定义为
unique_ptr& reset( pointer ptr = pointer() );
而不是
void reset( pointer ptr = pointer() );
注意:本质上reset
,它实际上是一个"赋值",应该在末尾返回*this*
,就像operator=
已经返回一样。(这不是要返回旧值或类似的东西。)
Boost
库要经过一个评审过程。API是这样的,因为它的审查。您可以选择编写适配器类模板或自己的共享指针类模板。由于boost
代码通常很重,后一种选择可能不是一个坏主意。然后您将完全控制API。