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

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

Mary-Kate Olsen
リリース: 2024-12-21 15:26:10
オリジナル
322 人が閲覧しました

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

Visual Studio のバグ: 一時オブジェクトにバインドされた非 Const 参照

指定されたコード スニペットは、Visual Studio で観察される特有の動作を示しています。

1

2

3

4

5

6

7

8

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート