是否有一个标准指针类(或 Boost),它是一个适用于不完整类型的非共享指针?我已经查看了 C++11 标准和 boost 库,但找不到一个,尽管它似乎是一种非常有用的类型。
例如,我希望能够使用智能指针制作不透明类型。
class A;
wrap_ptr<A> some_func();
void other_func( A const & );
A
是一种不透明类型,可用于多种功能。上述接口的用户只有一个不完整的 A 定义,但应该能够删除/重置指针。我知道上面可以用 a 来完成,shared_ptr
但是在这个特定的代码中我不想要这样的开销。unique_ptr
具有正确的所有权语义,但不能使用不完整的类型。理论上,包装器应该只需要具有指向删除器的指针的开销。
C++11 或 boost 库中是否有这种类型?
注意:我知道我可以轻松构建这种类型,但如果可能的话,我更喜欢标准类型。看起来它应该是一种基本的智能指针类型。
更新:unique_ptr
似乎不是一个好的选择。首先,语法开销将被抵消。其次,我不相信它可以安全地与自定义删除器一起使用。我会检查它是如何工作的。