第4.2.3节中的C ++复制省略之旅

问题描述 投票:0回答:1

我正在阅读第4.2.3节初始化容器,C ++第二版浏览

它说:

Vector read(istream& is)
{
     Vector v;
     for (double d; is>>d;)
         v.push_back(d);
     return v;
}

...在第5.2.2节中说明了为Vector提供移动构造函数的方法,以便从read()返回可能大量的数据很便宜。

Vector v = read(cin);  // no copy of Vector elements here

是否保证上面的表达式将被复制删除(在C ++ 17中?我认为返回中的v是一个左值和一个局部变量,因此可以

被复制删除,但不能保证被删除。我在这里想念什么吗?

我正在阅读第4.2.3节“初始化容器”,C ++第二版。它说:Vector read(istream&is){向量v; for(double d; is >> d;)v.push_back(d); ...

c++ c++17 move move-semantics copy-elision
1个回答
0
投票

是否保证上面的表达式将被复制删除(在C ++ 17中?

© www.soinside.com 2019 - 2024. All rights reserved.