我有這樣的代碼:爲什麼移動構造函數不會調用沒有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