[過去ログ] C++相談室 part156 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
614: 2021/07/03(土)20:04 ID:ApVtA7Dx(1) AAS
入力オーバーライドとか? うーん・・・ダブルGT!
615: 2021/07/03(土)20:04 ID:Y97o1UBK(1) AAS
個人的には「おぺれーたーだいなりだいなり」だな
他人には言ったことないけど
616: 2021/07/03(土)20:18 ID:Ju/axMXt(2/2) AAS
自分のレス読んで気づいたけど他の人に声出し読むう機会も無いからどうでもいいな
617: 2021/07/03(土)20:23 ID:A2f3M294(1) AAS
おぺれーたーぐれぐれ
618: 2021/07/03(土)21:03 ID:WO4lFPcp(1/2) AAS
オペレータ・イン
<<は当然オペレータ・アウト
619(1): 2021/07/03(土)21:05 ID:WO4lFPcp(2/2) AAS
朗読問題は根深くて、古くは漢文の読み下しからあり、
座右の書たるC言語を256倍使うための本にもちゃんと発音方法が載ってる
620: 2021/07/03(土)21:29 ID:iUoBj2xP(1) AAS
>> みぎみぎ
<< ひだりひだり
621(1): 2021/07/03(土)21:41 ID:iArH0hMS(1) AAS
>>603-611
ありがとうございます
func の返り値が左辺値参照である場合を除けば、コピーは起こらないでFAですね
で、func の返り値は左辺値参照でない限りは右辺値だとすると、auto& じゃ受けれないから auto&& で受けるべきということですね
622: 2021/07/03(土)22:59 ID:5pcVeoYl(1) AAS
オペレーター、クィっ、クィっ
623(7): 2021/07/04(日)03:21 ID:WJcubPcO(1/13) AAS
auto hoge = func()
は場合によってはコピーが起きる
という印象、
なぜなら戻り値をスタックのどこに積むかをfunc()の側で指定できないから
hogeの実体ドンピシャにfunc()内で構築できる保証が無い
コピーが省略され得るのは
auto hoge = func();
bar(hoge);
みたいな呼び出し元がhogeの用の一時的領域を次の関数呼び出しの引数としてやりくりできる場合だけなんじゃないの
624: 2021/07/04(日)07:20 ID:kv3QS/1l(1) AAS
ISO/IEC 14882に準じて
おぺれーたーらいとしふと
625: 2021/07/04(日)08:34 ID:mLloSLib(1/2) AAS
>>623
???
最適化されて bar(func()) になるときだけオブジェクトの構築が省略されるって言いたいの?
アホか全然レイヤの違う話だよ
右辺値左辺値の概念全く理解しとらんのか (何十年前のプログラマだ)
「印象」でものを語るな
626: 2021/07/04(日)10:01 ID:mLloSLib(2/2) AAS
それはそうと、こんなスレでも右辺値と左辺値よくわかってない (概念としてはわかっててもある場合のある値がどっちか判然としない) 人が多いのは、C++のムーブセマンティクスが洗練されてる証拠かもな
つまり、プログラマの預かり知らぬところで自動でコピーとムーブが仕分けされているという
627(6): 2021/07/04(日)10:11 ID:dMFRzHLQ(1/6) AAS
>>623
外部リンク:wandbox.org
そんなことないよな? と思いつつやってみた
まあ、そんなことないよな
ただ実験してて一個だけ気になったのが
take_S(S());
ってやった場合、default→moveじゃなくて単にmoveとしか表示されなかった
C++11/14でも-fno-elide-constructorsを付けない限りmoveだけ
これってなんで?
628: 2021/07/04(日)10:44 ID:pili1Lz/(1) AAS
>>619
万葉集は読み下しですらないからな
629(1): 2021/07/04(日)11:45 ID:WJcubPcO(2/13) AAS
>>627
解説キボティーヌ
"copy"と表示されているわけだが
630: 2021/07/04(日)11:56 ID:WJcubPcO(3/13) AAS
つかそれを除けば>>623の通りなんじゃないの
>take_S(S());
>ってやった場合、default→moveじゃなくて単にmoveとしか表示されなかった
これは呼び出し元がS()の戻り値の実体をtake_S()の引数の実体と合一(スタック上の同一アドレス)にできた例
defaultコンが呼ばれなかったのはstruct Sがメンバを持たないから最適化でデフォルトコンストラが削除された例
通常の関数呼び出しでcoutする処理が削除されたらそればバグだが、
コンストラクタの呼び出し削減の最適化はコンストラクタ内で副作用のある処理を行っている可能性を
無視して行われることが規格のどっかで認められているはず……
631(1): 2021/07/04(日)12:12 ID:WJcubPcO(4/13) AAS
>最適化されて bar(func()) になるときだけオブジェクトの構築が省略されるって言いたいの?
微妙にちげう func()がオブジェクトをコピー返しする関数である以上、その場合だけムーブにする余地があると言ってゐる
実際は
auto hoge = func()
bar(hoge)
(この後hogeを使う人は居ない)
と分けて書いたら"move"になりそうなケースなのに"copy"になったらしいが(>>627のリンク先
>アホか全然レイヤの違う話だよ
ムーブにできるのは参照の付け替えとみなせるケースなので上の話(コピーをムーブと読み替え得る条件)が別レイヤの話とは認められない
632(1): 2021/07/04(日)12:32 ID:dMFRzHLQ(2/6) AAS
>>629
表示されたってことは省略されてないよね?
633: 2021/07/04(日)12:34 ID:dMFRzHLQ(3/6) AAS
実験の部分を同時に話題にするべきではなかったな
上下前次1-新書関写板覧索設栞歴
あと 369 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.019s