【发布时间】:2012-08-25 18:05:08
【问题描述】:
可能重复:
What constitutes a valid state for a “moved from” object in C++11?
考虑这样的事情:
class Foo {};
std::vector<Foo> v( 5 );
这样做是否合法:
v.front() = std::move( v.back() );
前提是我之后做了这样的事情:
v.pop_back();
更准确地说,我想知道经过 std::move() 语义的 xvalue 需要什么。
我知道它需要是可破坏的(显然)。但还有什么?假设我会调用std::vector::insert() 或其他一些函数,这可能会在幕后对std::move()ed 值进行一些复制/移动。
这仍然合法吗?
在我的真实情况下,我有 std::vector<std::vector<Foo>> 并用它做一些事情。
但我不知道外部std::vector 仍在使用的std::vector 中的std::move() 是否合法。
【问题讨论】:
-
感谢参考
标签: c++ c++11 move-semantics