Spec-Zone.ru › C++

std::out_ptr_t<Smart,Pointer,Args...>::out_ptr_t

explicit out_ptr_t( Smart &sp, Args... args );
(1) (с C++23)
out_ptr_t( const out_ptr_t& ) = delete;
(2) (с C++23)
1) Создаёт out_ptr_t. Адаптирует sp так, как будто привязывает его к члену Smart&, захватывает каждый аргумент t в args... так, как будто инициализирует соответствующий член типа T в Args... значением std::forward<T>(t), а затем инициализирует сохранённый Pointer значениями по умолчанию.
Затем вызывает sp.reset() если выражение корректно; в противном случае вызывает sp = Smart() если std::is_default_constructible_v<Smart> является true. Программа является некорректной, если обе операции сброса некорректны.
2) Копирующий конструктор явно удалён. out_ptr_t не является ни копируемым, ни перемещаемым.

Параметры

sp - объект (обычно смарт-указатель) для адаптации
args... - аргументы, используемые для сброса и захвата

Возвращаемое значение

(ничего)

Исключения

Может вызывать реализационно-зависимые исключения.

Примечания

После создания объект Pointer или void*, на который указывает возвращаемое значение функции преобразования, равен nullptr.

Каждый аргумент в args... перемещается в созданный out_ptr_t если он имеет тип объекта, или передаётся в созданный out_ptr_t как есть, если он имеет тип ссылки.

Конструктор out_ptr_t может вызывать исключения. Например, когда sp является std::shared_ptr, выделение памяти для нового управляющего блока может выполняться внутри конструктора, а не деструктора.

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/out_ptr_t/out_ptr_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API