使用自定义删除器提升scoped_ptr/scoped_array

pic*_*c11 7 c++ boost smart-pointers

我没有看到如何让scoped_ptrscoped_array使用自定义删除器.也许有另一种实现允许类似于shared_ptr的受控删除?

顺便说一句,为什么shared_ptr允许自定义删除但scoped_ptr不允许?只是好奇.

Jam*_*lis 5

我没有看到如何获取scoped_ptrscoped_array使用自定义删除

你不能.

也许有另一种实现允许控制删除类似于shared_ptr

如果您的编译器支持右值引用并且您的标准库实现已实现std::unique_ptr,则可以使用它.

否则,boost::scoped_ptr实现非常简单. 最新版本不到100行简单代码.创建具有自定义删除器的自己的衍生物(通过模板参数静态或通过运行时提供的函数或函数动态)将非常简单.

  • scoped_ptr很简单,但启用受控删除不会那么简单.没有shared_ptr那么复杂,但如果库解决方案可用,我仍然不想编写代码. (2认同)