Namespaces
Variants

std:: inout_ptr

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Определено в заголовке <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 с ассоциированным умным указателем и аргументами сброса
(шаблон функции)
создает уникальный указатель, который управляет новым объектом
(шаблон функции)
создает разделяемый указатель, который управляет новым объектом
(шаблон функции)