Visual Studio のバグ: 一時オブジェクトにバインドされた非 Const 参照
指定されたコード スニペットは、Visual Studio で観察される特有の動作を示しています。
class Zebra {int x;}; Zebra goo() {Zebra z; return z;} void foo(Zebra &x) { Zebra y; x = y; foo(goo()); }
Visual Studio ではこのコードをエラーなしでコンパイルできますが、gcc ではエラーが発生します。コンパイルエラー。 typedef を使用して Zebra を int として表すと、Visual Studio が問題を検出するため、この動作はさらに不可解になります。
この動作は、古い Visual Studio 拡張機能によって駆動されます。 Microsoft のバグ レポート「一時オブジェクトを非定数参照にバインドできる」に記載されているように、Visual Studio では非定数参照を一時オブジェクトにバインドできます。
ただし、この拡張機能は / を使用して無効にできます。 Za コンパイラ フラグ。問題のコード スニペットがエラーになります。さらに、この問題にフラグを立てるために、レベル 4 の警告 (/W4 で有効) を利用できます。
以上がVisual Studio では、非 Const 参照が一時オブジェクトにバインドできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。