C++相談室 part156

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/05/19(水) 10:55:13.24ID:LZZifCH2
前スレ
C++相談室 part155
https://mevius.5ch.net/test/read.cgi/tech/1616555235/
2021/06/30(水) 11:13:43.85ID:EDSlPJC8
>>601
c++17:値のコピー省略を保証、て奴かね。

戻り値が右辺値かどうかで変わるんじゃない?
2021/06/30(水) 12:11:32.93ID:2LaR0NZ5
関数の戻り値は必ず右辺値のはずだが。
2021/06/30(水) 12:19:35.40ID:8KWEqHlz
んなこたーない
2021/06/30(水) 12:29:48.99ID:sL9lkuh+
参照返し……と思ったけど、
参照て右辺値だっけ?左辺値だっけ?
2021/06/30(水) 13:29:54.24ID:2LaR0NZ5
関数の戻り値は、戻り値の型が左辺値参照で有る場合だけは左辺値で、
それ以外は右辺値らしい。
2021/06/30(水) 13:34:03.56ID:2LaR0NZ5
>>606
戻り値の型が右辺値参照の場合、関数呼び出しの結果は、xvalueだが、分類上は、右辺値でもあり、glvalueでもある。
戻り値の型が左辺値参照の場合、関数呼び出しの結果は、左辺値。
戻り値の型が参照型でない場合、関数呼び出しの結果は、prvalueで、右辺値。

prvalue = 純粋右辺値。
glvalue = 一般化左辺値。
xvalue = 消えかかっている値。謎の値とも言われる。
2021/06/30(水) 13:39:20.73ID:2LaR0NZ5
>>601
一番上の書き方だと、少なくとも move になる。
下の二つは、moveもcopyも行われないで、アドレスだけが参照型変数に
入るのだと思う。
2021/06/30(水) 14:18:47.26ID:DhAhW4Ik
>>609
funcの戻り値型が左辺値参照の場合moveにはならんのでは?
2021/06/30(水) 14:56:49.27ID:2LaR0NZ5
>>610
その通りで、コピーコンストラクタが呼び出される気がする。
「少なくとも」と書いたのは、効率面で最低でも move が生じる
という意味で書いたつもりだった。
■ このスレッドは過去ログ倉庫に格納されています