std::inout_ptr
来自 cppreference.cn
< 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
与 void 不同,则为Pointer
,否则 - 如果 Smart::pointer 有效并表示一个类型,则为 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 起) |
创建一个管理新对象的共享指针 (函数模板) |