std :: array是否可移動?是std :: array可移動嗎?
在Bjarne Native 2012 presentation slides(幻燈片41)中,它列出了std :: array作爲唯一不可移動的容器之一。
快速查看上的gcc 4.8庫源代碼似乎證實的std ::陣列是不可移動的:
的std ::向量:
/* @brief %Vector move constructor.
... */
vector(vector&& __x) noexcept
: _Base(std::move(__x)) { }
而在標準::陣列的唯一方法接收一個右值引用參數是隨機元素訪問,從而避免了通過複製一回:
get(array<_Tp, _Nm>&& __arr) noexcept
{ /*...*/ return std::move(get<_Int>(__arr)); }
是布展構造&移動assignement爲std ::數組默認創建,或者是std ::數組不可移動?如果它是不可移動的,爲什麼std :: array不能移動,而std :: vector可以?
作爲一個興趣點,單獨存在或不存在移動構造函數不足以確定類型是否爲可移植的構造(如果使用關於此問題的表達/面向概念的視圖,就像最共同)。類似的移動分配。 –