哪些功能可以应用于RVALUE

What functions can be applied to rvalues?

本文关键字:应用于 RVALUE 功能      更新时间:2023-10-16

我看到了:

std::tie(iter, inserted) = set_of_s.insert(value);

来自http://en.cppreference.com/w/cpp/utility/tuple/tie

std::tie应该返回rvalue元组,但随后将分配操作员应用于它。这是如何工作的?我认为任务操作员只能应用于lvalue?

哪些功能可以应用于rvalues?

an rvalue 可以是

  • 通过成员函数的this参数
  • 按价值通过
  • const lvalue 参考
  • 通过 rvalue 参考。

non-const lvalue 参考。

这是如何工作的?

超载分配运算符是成员函数,因此可以在 rvalue

上调用。

我认为任务操作员只能适用于lvalue?

内置分配运营商就是这种情况。超载运算符是函数,遵循与函数相同的规则。

是的,内置的=操作员必须在其左操作数中具有lvalue。但是,这不是外观的内置=操作员。相反,它是对函数operator=的调用,等效于:

std::tie(iter, inserted).operator=(set_of_s.insert(value));

类成员访问操作员.不需要其左操作数即可成为lvalue,所以一切都可以。

旁注:不要将表达式的值类别与lvalue/rvalue参考类型混淆。任务运算符很可能以左操作数为rvalue参考的名称,因为它的名称是lvalue。