是否有支持右值的 ref 指针版本
Is There a Pointer Version of ref that Supports Rvalues?
这实际上是关于ref
合二为一的两个问题:
- 我可以在右值上使用
ref
吗?显然,作为程序员,我有责任确保它比任何调用代码都长寿。 - 有指针版本的
ref
吗?
问题的目标在这个粗略的答案中得以实现:https://stackoverflow.com/a/29031944/2642059 我宁愿只创建一个指向vector::data
rvalue 的指针,也不愿创建一个temp
变量。
-
不,界面会阻止这种情况,正如您链接到的参考所示。有一个重载需要左值引用;采用右值引用的那个将被删除。很难想象你如何在不通过左值访问对象的情况下对对象的生命周期负责。
-
那将是一个指针。
reference_wrapper
的目的是允许引用像值一样传递(常规引用不能),同时保留引用的语法(改用指针会丢失语法)。如果要按值传递指针,并让它充当指针,则只需使用指针即可。
我宁愿只创建一个指向
vector::data
rvalue 的指针,也不愿创建一个临时变量。
那将是指向临时的指针。临时指针将被销毁,使指针无效,然后才能对其进行任何操作。正如您所说,您需要对其生命周期负责,您可以通过创建变量来做到这一点。一旦你有了它,你就有一个左值。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- C#C /CLR处理REF参数和字符串指针
- 将ref类对象(Uri^)作为本机指针参数(IUriRuntimeClass*)传递
- 是否有支持右值的 ref 指针版本
- Typedef 用于指向 cv 和/或 ref 限定成员函数的指针
- const ref 和 const 指针 c++ 之间的区别
- 带有本地c++指针的c++/cx ref类的复制构造函数
- c++ /CLI双指针类型转换为ref IntPtr,用于c#访问
- 使用ref代替P/Invoke的固定指针