【发布时间】:2014-07-17 12:52:22
【问题描述】:
我有一个简单的代码:
const std::vector<int> data = {1,2,3};
std::vector<int> data_moved=std::move(data);
for(auto& i:data)
cout<<i;//output is 123
编译没有任何错误或警告!
而且似乎data 中仍有值!
移动一个 const 值似乎不正确,因为我们不能修改 const 对象那么该代码如何编译?!
【问题讨论】:
-
哪个编译器?什么命令行标志?来吧。
-
因为 const&& 也可以绑定到 const&。这是有效的行为。
-
@LightnessRacesinOrbit ideone.com/WIk6Dx
-
@omid:不,我的意思是,您的问题应该包括有关您正在使用的编译器以及如何使用它的详细信息。否则它不是一个完整的测试用例。
标签: c++ c++11 move move-semantics