shared_interface_ptr::shared_interface_ptr

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
shared_interface_ptr() = default; //1
template <class Y>
explicit shared_interface_ptr(Y* ptr); //2
template <class Y, class Alloc>
shared_interface_ptr(Y* ptr, Alloc alloc); //3
template <class Alloc>
shared_interface_ptr(std::nullptr_t, Alloc alloc); //4
template <class Y>
shared_interface_ptr(const shared_interface_ptr<Y>& right) noexcept; //5
template <class Y>
shared_interface_ptr(const shared_interface_ptr<Y>& rOwnership, element_type* ptr) noexcept; //6
template <class Y>
shared_interface_ptr(shared_interface_ptr<Y>&& right) noexcept; //7
template <class Y>
explicit shared_interface_ptr(const weak_interface_ptr<Y>& right); //8
template <class Y>
shared_interface_ptr(unique_interface_ptr<Y>&& right); //9

Конструкторы класса shared_interface_ptr.

  1. Конструктор по умолчанию, создающий пустой смарт-указатель shared_interface_ptr.
  2. Явный конструктор, который завладевает интерфейсным C-указателем ptr. Конструктор определен, только если тип Y* неявно преобразуем в интерфейсный C-указатель, для которого определен *this.
  3. Конструктор, который завладевает интерфейсным C-указателем ptr и использует для управления временем жизни адресуемого объекта указанный объект alloc, удовлетворяющий требованиям Allocator. Конструктор определен, только если тип Y* неявно преобразуем в интерфейсный C-указатель, для которого определен *this.
  4. Конструктор, который создает пустой смарт-указатель shared_interface_ptr. Используется при инициализации значением nullptr. Для управления временем жизни адресуемого объекта используется указанный объект alloc, удовлетворяющий требованиям Allocator.
  5. Конструктор, разделяющий владение объектом, с экземпляром right класса shared_interface_ptr<Y>. Определен, только если тип Y* неявно преобразуем в тип интерфейсного C-указателя, для которого определен тип создаваемого объекта.
  6. Конструктор, инициализирующий создаваемый объект shared_interface_ptr интерфейсным указателем ptr, но с использованием для управления временем жизни адресуемого объекта не связанный с ptr типами параметр rOwnership. Существование ptr считается прекращенным при уничтожении соответствующего экземпляра rOwnership.
  7. Конструктор, осуществляющий перемещение состояния right для инициализации создаваемого объекта. После вызова right становится пустым. Конструктор участвует в перегрузке только, если тип Y* неявно преобразуем в тип интерфейсного C-указателя, для которого определен тип создаваемого объекта.
  8. Конструктор, инициализируещий создаваемый объект интерфейсным указателем, с которым ассоциирован объект right типа weak_interface_ptr. Если последний пуст генерируется исключение std::bad_weak_ptr - в отличие от weak_ptr::lock. Конструктор участвует в перегрузке только, если тип Y* неявно преобразуем в тип интерфейсного C-указателя, для которого определен тип создаваемого объекта.
  9. Конструктор, осуществляющий преобразование смарт-указателя с эксклюзивным владением unique_interface_ptr в указатель с разделяемым владением shared_interface_ptr. После вызова эксклюзивный указатель right становится пустым. Конструктор участвует в перегрузке только, если тип Y* неявно преобразуем в тип интерфейсного C-указателя, для которого определен тип создаваемого объекта.
Параметры шаблона
YТип интерфейса, указатель на который неявно преобразуется в указатель _I* (шаблонный параметр класса shared_interface_ptr) и, в результате, инициализирует создаваемый экземпляр shared_interface_ptr.
AllocТип, удовлетворяющий требованиям Allocator, менеджера памяти C++, используемого для управления временем жизни адресуемого смарт-указателем shared_interface_ptr объекта и дополнительных структур данных.
Параметры
ptrИнтерфейсный C-указатель, которым инициалищируется создаваемый смарт-указатель.
allocМенеджер памяти C++, используемый для управления временем жизни объекта, адресуемого shared_interface_ptr, а также динамических компонентов, определяемых реализацией shared_interface_ptr. Используется на серверной стороне реализациями программных интерфейсов.
rightУмный указатель, который инициализирует создаваемый указатель shared_interface_ptr.
rOwnershipУмный указатель, с которым разделяется владение для управления временем жизни несвязанного с ним интерфейсного указателя ptr при использовании перегрузки 6.
Возможные исключения
std::bad_allocИсключение, которое генерируется перегрузками 2-4, при нехватке памяти при попытке ее выделения.
std::bad_weak_ptrИсключение, которое генерируется перегрузкой 8, если параметр ptr не адресует действительного интерфейса.
...Другие исключения, определяемые реализацией std::shared_ptr.