Что такое шаблон‹класс 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;

Любые объяснения?


person xmllmx    schedule 19.07.2016    source источник
comment
Возможный дубликат В чем разница между "typedef" и "использование" в C++11?   -  person Qix - MONICA WAS MISTREATED    schedule 19.07.2016


Ответы (2)


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

person Brian Bi    schedule 19.07.2016
comment
Разве владелец не является псевдонимом T. Не владелец‹T› - person West; 19.07.2016
comment
@West, нет, owner - это шаблон. T — это тип. - person chris; 19.07.2016
comment
Да, я так ошибался в этом. Для всех, как я, это компилируется. static_assert(is_same‹int,owner‹int››(), привет); - person West; 19.07.2016

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

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

template<typename T>
class X2 {
    // ...
public:
    owner<T*> p;  // OK: p is owning
    T* q;         // OK: q is not owning
};
person arenard    schedule 13.07.2017