ホームページ >バックエンド開発 >C++ >Visual Studio では、非 Const 参照が一時オブジェクトにバインドできるのはなぜですか?

Visual Studio では、非 Const 参照が一時オブジェクトにバインドできるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 15:26:10282ブラウズ

Why Does Visual Studio Allow Non-Const References to Bind to Temporary Objects?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。