小编zem*_*eht的帖子

返回右值引用和临时物化

考虑以下函数。我想要C++17的答案。

MyClass&& func() {
  return MyClass{};
}

int main() {
  MyClass&& myRef = func();
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 表达式是func()x 值吗?为什么?
  2. 为什么是myRef悬空引用?或者,更具体地说,为什么要func()返回悬空引用?返回右值引用不会导致临时物化并延长临时对象的生命周期吗?

c++ return rvalue-reference xvalue c++17

3
推荐指数
1
解决办法
275
查看次数

交换时增量迭代器 std::next

考虑代码:

list<int> a{ 4,3,1,2 };
auto i = a.begin();
swap(*i, *(++i));
Run Code Online (Sandbox Code Playgroud)

为什么交换什么都不做?虽然以下按预期工作?

list<int> a{ 4,3,1,2 };
auto i = a.begin();
swap(*i, *(next(i)));
Run Code Online (Sandbox Code Playgroud)

c++ swap iterator stl

2
推荐指数
1
解决办法
65
查看次数

标签 统计

c++ ×2

c++17 ×1

iterator ×1

return ×1

rvalue-reference ×1

stl ×1

swap ×1

xvalue ×1