Namespaces
Variants

std::experimental:: observer_ptr

From cppreference.net
Определено в заголовке <experimental/memory>
template < class W >
class observer_ptr ;
(техническая спецификация библиотеки fundamentals v2)

std::experimental::observer_ptr является неуправляющим указателем, или наблюдателем . Наблюдатель хранит указатель на второй объект, известный как наблюдаемый объект . observer_ptr также может не иметь наблюдаемого объекта.

Наблюдатель никоим образом не несет ответственности за наблюдаемый объект; между наблюдателем и объектом, за которым он наблюдает, нет внутренней связи.

Он предназначен как почти полная замена сырым указателям, с тем преимуществом, что, будучи словарным типом, он указывает на предполагаемое использование без необходимости детального анализа читателями кода.

Специализации observer_ptr удовлетворяют требованиям CopyConstructible и CopyAssignable .

Требования к типам
-
W не должен быть ссылочным типом, но может быть неполным типом.

Содержание

Типы членов

Тип члена Определение
element_type W , тип объекта, за которым наблюдает этот observer_ptr

Функции-члены

создает новый observer_ptr
(публичная функция-член)
(destructor)
(неявно объявлен)
уничтожает observer_ptr
(публичная функция-член)
operator=
(неявно объявлен)
неявно объявленные операторы копирующего и перемещающего присваивания, которые присваивают сохраненный указатель
(публичная функция-член)
Модификаторы
возвращает указатель на наблюдаемый объект и прекращает наблюдение за объектом
(публичная функция-член)
заменяет наблюдаемый объект
(публичная функция-член)
обменивает наблюдаемые объекты
(публичная функция-член)
Наблюдатели
возвращает указатель на наблюдаемый объект
(публичная функция-член)
проверяет, есть ли связанный наблюдаемый объект
(публичная функция-член)
разыменовывает указатель на наблюдаемый объект
(публичная функция-член)
Преобразования
явная функция преобразования в сохраненный указатель
(публичная функция-член)

Функции, не являющиеся членами класса

создает observer_ptr , который наблюдает за объектом
(шаблон функции)
сравнивает с другим observer_ptr или с nullptr
(шаблон функции)
специализирует алгоритм swap
(шаблон функции)

Вспомогательные классы

Поддержка хеширования для observer_ptr
(специализация шаблона класса)

Пример