什么是可修改的Rvalue?

Nin*_*ang 4 c++ c++11

有人会举一个"可修改的右值"的例子吗?我的理解是rvalue出现在表达式"="的右侧.我测试了以下示例,但我不确定它是否解释了"可修改的rvalue"

int i=1
int &j = i;
j=2;  //cout: i == 2, 
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 6

它在某种程度上取决于短语"可修改的右值"的上下文.但是,这是一个可能的例子:

struct Modifiable
{
  int x;
  void modify() { std::cout << x << '\n'; x = -x; std::cout << x << '\n'; }
};

Modifiable demo()
{
  Modifiable m;
  m.x = 42;
  return m;
}

int main()
{
  demo().modify();
}
Run Code Online (Sandbox Code Playgroud)

返回值demo()是一个rvalue(实际上甚至是prvalue),但是通过调用来修改modify().

[实例]