std::out_ptr_t<Smart,Pointer,Args...>:: out_ptr_t
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
out_ptr_t::out_ptr_t
|
||||
| Non-member functions | ||||
|
explicit
out_ptr_t
(
Smart
&
sp, Args...
args
)
;
|
(1) | (начиная с C++23) |
|
out_ptr_t
(
const
out_ptr_t
&
)
=
delete
;
|
(2) | (начиная с C++23) |
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 . Программа является некорректной, если обе операции сброса являются некорректными.
out_ptr_t
не является копируемым или перемещаемым.
Содержание |
Параметры
| sp | - | объект (обычно умный указатель) для адаптации |
| args... | - | аргументы для захвата, используемые при сбросе |
Возвращаемое значение
(нет)
Исключения
Может генерировать исключения, определяемые реализацией.
Примечания
После создания
Pointer
или объект
void
*
, на который указывает возвращаемое значение любой из функций преобразования, равен
nullptr
.
Каждый аргумент в
args...
перемещается в созданный
out_ptr_t
если он имеет объектный тип, или передаётся в созданный
out_ptr_t
как есть если он имеет ссылочный тип.
Конструктор
out_ptr_t
может генерировать исключения. Например, когда
sp
является
std::shared_ptr
, выделение памяти для нового блока управления может выполняться в конструкторе, а не в деструкторе.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |