Что такое "шаблон<класс T> с использованием owner = T;"?

Ниже приводится выдержка из 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;

Есть объяснения?

2 ответа

Решение

Это означает, что для каждого T, owner<T> это псевдоним для T,

Его можно использовать как аннотацию, чтобы показать, какие указатели являются "владельцем", т. Е.:

Пример не владеющего необработанным указателем

template<typename T>
class X2 {
    // ...
public:
    owner<T*> p;  // OK: p is owning
    T* q;         // OK: q is not owning
};
Другие вопросы по тегам