lvalueとrvalueとmoveと

やっぱりrvalueを分解してxvalueとprvalueを議論する意味は規格書の重箱の隅をつつく以外の意味はない気がする。右辺値とか左辺値とか一時オブジェクトとか消えゆく値とかいう怪しげな言葉を投げ捨てましょう。
3
前へ 1 2 ・・ 7 次へ
Theolizer @TheorideTech

@yumetodo @kazatsuyu ああっ、以前自分の中で整理した文を見返したら、xvalue間違ってました。一時オブジェクトを拘束した変数=xvalueと書いてた。 う~ん、未だに十分には整理できてないみたい。

2017-06-26 01:14:31
yumetodo @yumetodo

@TheorideTech @kazatsuyu だからそもそもprvalueとxvalueをわけるのは無意味だと思うんですよね。

2017-06-26 01:15:49

rvalueへの変換?

Theolizer @TheorideTech

@yumetodo @kazatsuyu なるほど。 まだ分けてないし、成るべくここは避けて通った方がよさそう。 でも、一時オブジェクトだからmoveできるってところは間違ってない気がします。

2017-06-26 01:16:52
yumetodo @yumetodo

@TheorideTech @kazatsuyu 「一時オブジェクトだからmoveできる」ってのもおかしい。さっきの例で変数v1が一時オブジェクトに変化するんじゃなくって、一時オブジェクトだと偽っているだけ。lvaueはrvalueに変換できない。

2017-06-26 01:18:32
yumetodo @yumetodo

@TheorideTech @kazatsuyu >一時オブジェクトだと偽っている これもちがうか、rvalueの別名ですよーとアピールしている

2017-06-26 01:19:17
Theolizer @TheorideTech

@yumetodo @kazatsuyu いや、普通にできるでしょ。 a=b+1;はb:lvalueをrvalueに変換してます。

2017-06-26 01:20:38
白山風露 @kazatsuyu

@TheorideTech @yumetodo それはb+1という式の戻り値がprvalueなだけでは?

2017-06-26 01:21:38
Theolizer @TheorideTech

@kazatsuyu @yumetodo bが一旦rvalueへ変換されてから、計算されると聞いた記憶が有ります。 名前も付いていたような。思い出せない。年を感じます。

2017-06-26 01:22:39
yumetodo @yumetodo

@kazatsuyu @TheorideTech あれ、 cpplover.blogspot.jp/2009/11/rvalue… の >lvalueはrvalueに変換できるが、その逆、rvalueをlvalueに変換することは出来ない。 がわからなくなってきた(寝てる

2017-06-26 01:22:43
Theolizer @TheorideTech

@yumetodo @kazatsuyu 容器から値を取り出せるけど、値を容器にすることはできないと理解してます。

2017-06-26 01:23:33
白山風露 @kazatsuyu

@TheorideTech @yumetodo 詳しい動作の規定は思い出せないけど、それはbがrvalueとして扱われるのではなく、bのコピーが作られているということになるのでは?

2017-06-26 01:24:29
yumetodo @yumetodo

@kazatsuyu @TheorideTech アセンブリ的にもそのほうが自然

2017-06-26 01:24:51
Theolizer @TheorideTech

@yumetodo @kazatsuyu bはlvalueだから、コピーするならlvalueになると思います。

2017-06-26 01:25:47
Theolizer @TheorideTech

@yumetodo @kazatsuyu 内部的には要はアキュムレータへロードしているだけなので、値をコピーしているんですけどね。

2017-06-26 01:26:34
白山風露 @kazatsuyu

@TheorideTech @yumetodo コピー先がlvaueたりうる束縛されたオブジェクトならlvalueだけど、rvalueにコピーされることも普通にあるのでは

2017-06-26 01:28:14
Theolizer @TheorideTech

@kazatsuyu @yumetodo なるほど。rvalueへ変換するのとrvalueへコピーするのって、結局同じことを言っているのかも知れませんね。

2017-06-26 01:29:36
白山風露 @kazatsuyu

@TheorideTech @yumetodo ああ、変換というのは別オブジェクトにすることも含めての話だったか

2017-06-26 01:32:12
Theolizer @TheorideTech

@yumetodo @kazatsuyu 元のlvalueをrvalueにできるできないの話は、lvalueをムーブするために、std::moveでキャストしてます。このキャストの「変換」ですね。 std::moveはlvalueをrvalueへ変換していると思います。◯or☓?

2017-06-26 01:36:59
yumetodo @yumetodo

@TheorideTech @kazatsuyu >std::moveはlvalueをrvalueへ変換していると思います。◯or☓? ばつ。rvalue referenceへの変換であってrvalueへの変換ではない

2017-06-26 01:37:54

一時オブジェクト

前へ 1 2 ・・ 7 次へ