我有这样的代码:为什么移动构造函数不会调用没有std :: move?
SomeType::SomeType(std::vector<Item>&& container, const float someOtherPArameter)
: internal_container(std::move(container))
{
// some code here
}
有人可以给我解释为什么一个移动构造函数并不要求不“的std ::移动”的“internal_container”?
名称的东西是左值(即使它们被声明为左值引用)。不要问我为什么 – 2014-10-09 02:28:57
@Matt McNabb因为程序可能仍然指向他们。哲学是,如果程序无法再看它,窃取对象的胆量(可能除了它的析构函数)也是可以的。只有未命名的临时人员符合资格。 'std :: move'是程序覆盖它的一种方式,以提供明确的许可。 – 2014-10-09 02:45:12