假設有這樣的功能,移動:的std :: MOVE-如何警告程序員不使用* *從對象
int * func()
{
std::unique_ptr<int> ptr(new int(3));
//Few more lines of code
//then one function added where programmer writes like some thing
SOME_OTHER_FUNC(std::move(ptr));
return ptr.get();
}
void SOME_OTHER_FUNC(std::unique_ptr<int> arg_ptr)
{
}
有沒有一種方法來提醒程序員,以避免與std::move
這樣的錯誤?這不僅僅是關於unique_ptr
,而是其他對象。
當我們使用移動從不合適的對象對象是否有任何機制來產生警告?
不知道是否重複,但密切主題明智:http://stackoverflow.com/questions/39413502/why-should-a-move-constructor-or-move-assignment-operator-clear-its-argument/39413587# 39413587 – Hayt
我希望編譯器編寫者發明警告,以便使用任何已經轉換爲右值的任何東西,例如'std :: move'。如果它足夠傷害你,考慮向你的編譯器的作者提交補丁! –
@TobySpeight我懷疑會引入這樣的警告。類型可以有移動構造函數/賦值運算符,使原始文件處於(部分,甚至完全)指定狀態,並且某些(甚至可能全部)某些操作將具有明確定義的行爲。編譯器如何知道從對象移出的使用是否是無意的? – user2079303