それは変数mを宣言しないようデフォルトのコンストラクタの好奇心
MyClass m();
は、古典的な落とし穴ですが、関数はゼロの引数を取り、MyClassのを戻しながら。しかし、私は(何らかの形で上記の文にcolapsesらしい)のVisual Studioで次のステートメントは、同じ問題を生成することが見つかりました:
MyClass m(MyClass());
誰もが、この動作を説明できますか?
注:期待されるもののより明示的なバージョンは正しいことを行います(つまり、デフォルトを呼び出し、次に移動コンストラクタを呼び出します)。
MyClass m(std::move(MyClass()));