雖然默認構造好奇心
MyClass m();
是一個經典的疑難雜症的,因爲它沒有聲明變量m,而是一個函數取零個參數並且返回MyClass的。然而,我發現,在Visual Studio中的下列語句產生同樣的問題(現在看來,這在某種程度上colapses上面的說法):
MyClass m(MyClass());
任何人都可以解釋這種現象?
注意:一個更「明確」的版本可以做正確的事情(即調用默認值,然後是移動構造函數)。
MyClass m(std::move(MyClass()));