are*_*ard 4 c++ c++14 cpp-core-guidelines
在 cpp 核心指南中:非拥有原始指针的示例 我不明白以下代码:
template<typename T>
class X2 {
// ...
public:
owner<T*> p; // OK: p is owning
T* q; // OK: q is not owning
};
Run Code Online (Sandbox Code Playgroud)
这是什么语法owner<T*> p?
有一个关于owner页面下方语义的注释:
Note
owner<T*>没有超出T*. 它可以在不更改任何代码的情况下使用,也不会影响 ABI。它只是程序员和分析工具的一个指标。例如,如果 anowner<T*>是一个类的成员,那么该类最好有一个析构函数delete。
它基本上与提议的std::observer_ptr. 不同之处在于owner存储一个指针并“拥有”它,尽管它不像std::unique_ptr. 当您想更明确地指出原始指针是拥有指针时,应该使用它。
注意这里的“语法”只是模板类的一个变量,不是关键字什么的。