2017-06-21 26 views
6

右辺値を左辺値に変換できないのはなぜですか?しかし、反対方向に変換することは可能です。技術的な価値はメモリアドレスを持っていますね。右端値から左端値への変換?

+8

思考実験: 'int型のx = 1;' - 1は、ここでは右辺値です。リテラル1はメモリアドレスを持っていますか?アドレスを取得するために '&1'を実行できますか? – cdhowie

+0

rvalueを関数に渡します。真面目なのは、表現の終わりには、アクセス権が得られた行為がなくなり、ぶら下がったポインタが残ってしまうことです。 –

+0

@cdhowieなぜ 'const int&bon = 2;'が可能ですか? –

答えて

0

rvaluesをlvaluesに変換できないのはなぜですか?

言語で許可されていないためです。 lvalues lvaluesを作るものの1つは、のIDを持つことです。 Rvaluesは名前がないので、それはすでにlvaluesのプロパティに違反するので、しないでください。

あなたはしかし、その寿命を増加させることにより、右辺値にアイデンティティを与えることができているもの:

auto&& val = f(); // 'f' returns a prvalue. 
関連する問題