我有一個Action
類,看起來像這樣(在其精簡形式):對象會從返回的值不構成複製或移動構造
struct Action {
explicit Action(...some parameters...); // I only use this to construct Action objects
Action(const Action&) = delete; // Don't want copy constructor
Action(Action&&) = delete; // Same for move constructor
}
在其他一些翻譯單元,我曾嘗試做到這一點:
Action action = someMethodForGettingActions(); // The method returns Action objects by rvalue
Visual Studio的Intellisense希望爲此掛我,有道理。它說它不能訪問移動構造函數。 然而,這編譯和運行如預期。這裏發生了什麼?這是否是一些編譯器優化對我的玩法?
具體哪一種intellisense解析器?並不是所有的IDE都使用相同的。 –
我使用的是Visual Studio 2013. – Mark
這利用了返回值優化,但編譯器應禁止編譯,因爲您已經刪除了'const Action&'構造函數,即使它實際上並不需要使用它。 – Dave