boost :: shared_ptr的no-op解除分配器

Ale*_*x B 17 c++ boost

Boost中是否存在boost::shared_ptr用于静态对象的库存无操作解除分配器等.

我知道写它是非常简单的,但如果已经有一个可用的话,我不想把我的代码洒上额外的小函数.

Cas*_*Cow 10

是的,这里有一个:

#include <boost/serialization/shared_ptr.hpp> // for null_deleter

class Foo
{
  int x;
};

Foo foo;
boost::shared_ptr< Foo > sharedfoo( &foo, boost::serialization::null_deleter() );
Run Code Online (Sandbox Code Playgroud)

当然,存在一个危险,即您需要知道您调用的函数不存储shared_ptr供以后使用,因为它实际上违反了shared_ptr的策略,因为底层对象保持有效,直到shared_ptr的最后一个实例.