異なる型への非 const lvalue 参照のバインド
C では、非 const lvalue 参照は同じ lvalue にバインドする必要がありますタイプ。次の例に示すように、一時オブジェクトを非 const 参照にバインドしようとする場合、これは混乱を招く可能性があります。
int a; const double &m = a; // This is allowed double &m = a; // This produces an error
エラー「タイプ 'double' への非 const 左辺値参照はバインドできません」関連のない型 'int' の値にバインドできないことは、非 const 型の参照が別の型のオブジェクトにバインドできないことを示します。
この制限の理由は次のとおりです。一時オブジェクトを非定数参照にバインドすることはできません。 a が double に変換されると、一時オブジェクトが作成されます。その結果、次のコード行:
double &m = a;
非 const 参照を一時オブジェクトにバインドしようとしますが、これは許可されていません。
ただし、次の例外があります。 Visual Studio では、このルールが適用されます。このルールでは、コンパイラ拡張機能により、非 const 参照を一時オブジェクトにバインドできます。ただし、この動作は標準ではないため、GCC などの他のコンパイラではエラーが発生します。
以上がC で非 Const 左辺値参照を異なる型にバインドできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。