владелец & л; Т * & GT; Синтаксис p в основных принципах cpp

В основных принципах cpp: Пример не владеющего необработанным указателем
Я не понимаю следующий код:

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

что это за синтаксис owner<T*> p ?

2

Решение

Есть заметка о семантике owner далее вниз по странице:

Заметка owner<T*> не имеет семантики по умолчанию за T*, Его можно использовать без изменения какого-либо кода, использующего его, и не затрагивая ABI. Это просто индикатор для программистов и инструментов анализа. Например, если owner<T*> является членом класса, этот класс лучше иметь деструктор, который deleteсидеть.

Это в основном почти так же, как предложено std::observer_ptr. Разница в том, что owner хранит указатель и «владеет» им, хотя это не делает RAII как std::unique_ptr, Это следует использовать, когда вы хотите более четко указать, что необработанный указатель является указателем-владельцем.

Обратите внимание, что «синтаксис» здесь является просто переменной класса шаблона, это не ключевое слово или что-то еще.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector