std::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) | создает уникальный указатель, который управляет новым объектом (шаблон функции) |
|
(C++20) | создает общий указатель, который управляет новым объектом (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/inout_ptr_t/inout_ptr