从C ++ 11开始,我们就拥有了一套相当完整的智能指针类型:
但缺少的是一个没有所有权的智能指针,与上述集成在一起。
这似乎导致开发人员讨论了一个有点松散的分类,通常会有像“非拥有智能指针”这样的短语。但是这不是我想在我的代码中命名指针包装模板时使用的好名字。
对于非拥有智能指针,是否有更好的代码友好名称的建议?
template<typename T>
struct NonOwningSmart_pointer;
有std :: weak_ptr并没有真正满足要求,因为它需要shared_ptr。
更新:唯一命名这种类型的智能指针的主要好处是代码清晰度,构造为nullptr并与其他std指针类型很好地配合。
答案 0 :(得分:4)
甚至有人建议这样的事情: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf
在那里,它被命名为观察者_ptr&#39; 该提案遭到拒绝,但最近在Boost邮件列表上讨论了相同的想法(有一些更积极的反馈)。
答案 1 :(得分:1)
C ++核心指南似乎建议对非拥有指针使用原始指针。我猜,从技术上讲,他们说使用智能指针来表明所有权并假设原始指针是非拥有的。我想这不排除使用智能指针作为非拥有指针,但我没有看到它将提供什么优势。