Ниже приводится выдержка из gsl.h
из Microsoft gsl
библиотека (https://github.com/microsoft/gsl):
namespace gsl
{
//
// GSL.owner: ownership pointers
//
using std::unique_ptr;
using std::shared_ptr;
template<class T>
using owner = T;
...
};
Я не могу понять, что означает следующий шаблон псевдонима:
template<class T>
using owner = T;
Есть объяснения?
Это означает, что для каждого T
, owner<T>
это псевдоним для T
,
Его можно использовать как аннотацию, чтобы показать, какие указатели являются «владельцем», т. Е .:
Пример не владеющего необработанным указателем
template<typename T>
class X2 {
// ...
public:
owner<T*> p; // OK: p is owning
T* q; // OK: q is not owning
};