std::inout_ptr
来自 cppreference.com
< cpp | memory | inout ptr t
定义在头文件 <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
应该是一个在包含对外部函数调用的完整表达式结束时销毁的临时对象,以避免悬空引用。
功能测试 宏 | 值 | Std | 功能 |
---|---|---|---|
__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) |
创建一个管理新对象的唯一指针 (函数模板) |
创建一个管理新对象的共享指针 (函数模板) |