Namespaces
Variants

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

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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 , выделение памяти для нового блока управления может выполняться в конструкторе, а не в деструкторе.

Пример