2
我的代碼如下unique_ptr移動的不同行爲?
std::vector<std::unique_ptr<int>> v;
std::unique_ptr<int> a(new int(0));
std::unique_ptr<int>& b = a;
v.insert(v.begin(), std::move(b)); //ok
但是如果我在第三語句添加常量
const std::unique_ptr<int>& b = a;
v.insert(v.begin(), std::move(b)); //Compiler error, cannot access ptr private member
爲什麼編譯器顯示不能訪問除了不能轉換常量的唯一指針的私有成員非const?謝謝。
爲什麼「爲什麼」?爲什麼不!?如果這個東西是const的,你很難期望能夠改變它... –
@chris雖然沒有'move'調用代碼會*嘗試*一個副本並且無法編譯。 –
@KonradRudolph:確實不會編譯,但不能移動const對象。移動正在改變狀態,'const'禁止該狀態。 –