Spec-Zone.ru › C++

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

Пример

См. также

out_ptr
(C++23)
создает out_ptr_t с ассоциированным умным указателем и аргументами сброса
(шаблон функции)
make_uniquemake_unique_for_overwrite
(C++14)(C++20)
создает уникальный указатель, который управляет новым объектом
(шаблон функции)
make_sharedmake_shared_for_overwrite
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API