std::inout_ptr
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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
|
Пример
| Этот раздел не завершён Причина: нет примера |
Смотрите также
(C++23) |
создаёт out_ptr_t с ассоциированным умным указателем и сбрасывает аргументы (шаблон функции) |
(C++14)(C++20) |
создаёт уникальный указатель, который управляет новым объектом (шаблон функции) |
| создаёт общий указатель, который управляет новым объектом (шаблон функции) |