是否有支持右值的 ref 指针版本

Is There a Pointer Version of ref that Supports Rvalues?

本文关键字:ref 指针 版本 支持 是否      更新时间:2023-10-16

这实际上是关于ref合二为一的两个问题:

  1. 我可以在右值上使用ref吗?显然,作为程序员,我有责任确保它比任何调用代码都长寿。
  2. 有指针版本的ref吗?
这两个粗略

问题的目标在这个粗略的答案中得以实现:https://stackoverflow.com/a/29031944/2642059 我宁愿只创建一个指向vector::data rvalue 的指针,也不愿创建一个temp变量。

  1. 不,界面会阻止这种情况,正如您链接到的参考所示。有一个重载需要左值引用;采用右值引用的那个将被删除。很难想象你如何在不通过左值访问对象的情况下对对象的生命周期负责。

  2. 那将是一个指针。reference_wrapper的目的是允许引用像值一样传递(常规引用不能),同时保留引用的语法(改用指针会丢失语法)。如果要按值传递指针,并让它充当指针,则只需使用指针即可。

我宁愿只创建一个指向vector::data rvalue 的指针,也不愿创建一个临时变量。

那将是指向临时的指针。临时指针将被销毁,使指针无效,然后才能对其进行任何操作。正如您所说,您需要对其生命周期负责,您可以通过创建变量来做到这一点。一旦你有了它,你就有一个左值