std:: inout_ptr
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Non-member functions | ||||
|
inout_ptr
|
|
Определено в заголовке
<memory>
|
||
|
template
<
class
Pointer
=
void
,
class
Smart,
class
...
Args
>
auto inout_ptr ( Smart & s, Args && ... args ) ; |
(начиная с C++23) | |
Возвращает
inout_ptr_t
с выведенными аргументами шаблона, который захватывает аргументы для сброса по ссылке.
Программа является некорректной, если конструирование возвращаемого значения (см. ниже) является некорректным.
Содержание |
Параметры
| s | - | объект (обычно умный указатель) для адаптации |
| args... | - | аргументы для захвата сброса |
Возвращаемое значение
std::
inout_ptr_t
<
Smart, P, Args
&&
>
(
s,
std::
forward
<
Args
>
(
args
)
...
)
, где
P
является
-
Pointer, еслиPointerне является типом void , иначе, - Smart :: pointer , если он корректен и обозначает тип, иначе,
- Smart :: element_type * , если Smart :: element_type корректен и обозначает тип, иначе,
- std:: pointer_traits < Smart > :: element_type * .
Примечания
Пользователи могут указать аргумент шаблона для параметра шаблона
Pointer
, чтобы обеспечить взаимодействие с внешними функциями, принимающими
Pointer
*
.
Поскольку все аргументы для сброса захватываются по ссылке, возвращаемый
inout_ptr_t
должен быть временным объектом, уничтожаемым в конце полного выражения, содержащего вызов внешней функции, чтобы избежать висячих ссылок.
| Макрос тестирования функций | Значение | Стандарт | Функциональность |
|---|---|---|---|
__cpp_lib_out_ptr
|
202106L
|
(C++23) |
std::out_ptr
,
std::inout_ptr
|
202311L
|
(C++26) |
Автономная реализация
std::out_ptr
и
std::inout_ptr
|
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++23)
|
создает
out_ptr_t
с ассоциированным умным указателем и аргументами сброса
(шаблон функции) |
|
(C++14)
(C++20)
|
создает уникальный указатель, который управляет новым объектом
(шаблон функции) |
|
создает разделяемый указатель, который управляет новым объектом
(шаблон функции) |