Namespaces
Variants

std::experimental:: shared_ptr

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

std::experimental::shared_ptr — это модифицированная версия std::shared_ptr с добавленной поддержкой массивов.

Содержание

Типы членов

Тип члена Определение
element_type std:: remove_extent_t < T >

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

создает новый shared_ptr
(публичная функция-член)
Наблюдатели
возвращает сохраненный указатель
(публичная функция-член)
разыменовывает сохраненный указатель
(публичная функция-член)
предоставляет доступ по индексу к массиву
(публичная функция-член)

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

применяет static_cast , dynamic_cast , const_cast или reinterpret_cast к сохранённому указателю
(шаблон функции)

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

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

Члены и не-члены, идентичные std:: shared_ptr

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

Следующие функции-члены работают с std::experimental::shared_ptr вместо std::shared_ptr и std::experimental::weak_ptr вместо std::weak_ptr . В остальном поведение идентично.

уничтожает управляемый объект, если больше нет shared_ptr , ссылающихся на него
(публичная функция-член std::shared_ptr<T> )
присваивает shared_ptr
(публичная функция-член std::shared_ptr<T> )
Модификаторы
заменяет управляемый объект
(публичная функция-член std::shared_ptr<T> )
обменивает управляемые объекты
(публичная функция-член std::shared_ptr<T> )
Наблюдатели
возвращает количество объектов shared_ptr , ссылающихся на тот же управляемый объект
(публичная функция-член std::shared_ptr<T> )
(до C++20)
проверяет, управляется ли объект только текущим объектом shared_ptr
(публичная функция-член std::shared_ptr<T> )
проверяет, не является ли хранимый указатель нулевым
(публичная функция-член std::shared_ptr<T> )
предоставляет упорядочение shared pointers на основе владельца
(публичная функция-член std::shared_ptr<T> )

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

Эти нечленные функции объявлены в пространстве имён std::experimental и работают с std::experimental::shared_ptr вместо std::shared_ptr , но в остальном ведут себя идентично соответствующей функции C++14.

создает умный указатель, который управляет новым объектом
(шаблон функции)
создает умный указатель, который управляет новым объектом, выделенным с использованием аллокатора
(шаблон функции)
возвращает удалитель указанного типа, если он принадлежит
(шаблон функции)
(удален в C++20) (удален в C++20) (удален в C++20) (удален в C++20) (удален в C++20) (C++20)
сравнивает с другим shared_ptr или с nullptr
(шаблон функции)
выводит значение хранимого указателя в выходной поток
(шаблон функции)
специализирует алгоритм std::swap
(шаблон функции)
специализирует атомарные операции для std::shared_ptr
(шаблон функции)

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

Эти шаблоны классов объявлены в пространстве имён std::experimental и работают с std::experimental::shared_ptr и std::experimental::weak_ptr , а не с std::shared_ptr и std::weak_ptr , но в остальном ведут себя идентично соответствующим шаблонам классов C++14.

(C++11)
предоставляет смешанное владельческое упорядочение shared и weak указателей
(шаблон класса)
позволяет объекту создавать shared_ptr ссылающийся на себя
(шаблон класса)

Пример