上MSVC11下面的代碼失敗,出現錯誤MSVC不能上溯造型的unique_ptr
cannot convert parameter 1 from 'std::unique_ptr<DerivedClass>' to 'std::unique_ptr<BaseClass>'
代碼:
class BaseClass
{ };
class DerivedClass : public BaseClass
{ };
void MyFunction(std::unique_ptr<BaseClass> obj)
{ };
int main()
{
auto ptr = std::unique_ptr<DerivedClass>(new DerivedClass);
MyFunction(ptr); // fails, with error about cannot convert type
// MyFunction(std::move(ptr)); // This will work
}
正如原因是std::move
缺少的答案中指出,但錯誤消息讓我感到困惑,所以我發佈了這個問題,所以我對它進行了更新,讓所有同樣困惑的人都有最好的機會找到答案。
我以爲這個問題並不是那麼可怕,因爲MSVC打印的混淆錯誤信息。正如@DeadMG所評論的,我並不是唯一一個被此事發現的人。現在,對於那些搜索編譯器錯誤的人來說,這個問答將會出現... – Zero