returnでmoveやった方がいい?

またもや sasso- と Cryolite 先生が解決してくれました。 所々で日付が一気に飛んでたりするので注意して下さい
7
めるぽん.am @melponn

前もCryoliteさんが sasso- とあらわれて3秒で解決してくれた気がするんだけどなぁ・・・

2010-06-14 21:42:57
Akso de la Malbono @Cryolite

sasso- sasso sasasso sasso- (出囃子)

2010-06-14 21:45:07
対鉱物用武装 @kikairoya

闇の魔人が 颯爽と 現れた! [宮崎産を食べよう]

2010-06-14 21:46:21
対鉱物用武装 @kikairoya

頼もしすぎて泣ける・・・ [宮崎産を食べよう]

2010-06-14 21:46:38
めるぽん.am @melponn

@Cryolite おお、sasso-とC++仕様書が・・・!

2010-06-14 21:46:42
Akso de la Malbono @Cryolite

@melponn N3092 の 12.8p34 と 12.8p35 とを組み合わせて読むことで, return に自動変数を指定した場合,戻り値の constructor 呼び出しではまずその自動変数を右辺値とみなしてみりゅりゅんルールとなります.

2010-06-14 21:51:01
Akso de la Malbono @Cryolite

C++03 の頃から RVO 周りの文言はしょっちゅう読み直しているので, "certain criteria are met" と検索すれば該当箇所が引っかかると覚えてしまっているという.

2010-06-14 21:52:37
めるぽん.am @melponn

@Cryolite おお、なんかそれっぽい文言が!ありがとうございます!

2010-06-14 21:53:12
対鉱物用武装 @kikairoya

C(ry先生恐ろしい・・・ [宮崎産を食べよう]

2010-06-14 21:53:14
めるぽん.am @melponn

さすがすぎる・・・ RT @Cryolite: C++03 の頃から RVO 周りの文言はしょっちゅう読み直しているので, "certain criteria are met" と検索すれば該当箇所が引っかかると覚えてしまっているという.

2010-06-14 21:53:50
SKS/ファントムの申し子 @repeatedly

とあるC++の禁書目録を地で行くくらいおらいと先生であった

2010-06-14 21:55:30
普通のC++使い、銀天すばる @SubaruG

でも RVO が働かない場面もある。例えば return f( x, y ); とか書いた場合はそう。でもこれはコンパイラが勝手に move してくれるんだっけ?

2010-08-06 20:05:08
めるぽん.am @melponn

http://togetter.com/li/29274 とかの話ですかね? RT @SubaruG: でも RVO が働かない場面もある。例えば return f( x, y ); とか書いた場合はそう。でもこれはコンパイラが勝手に move してくれるんだっけ?

2010-08-06 20:09:06
普通のC++使い、銀天すばる @SubaruG

@melponn その議論では、末尾関数呼び出しの場合には特に触れられてなかった気が。

2010-08-06 20:10:45
めるぽん.am @melponn

@SubaruG では頑張って周辺の仕様を調べて結果をPostして頂ければまとめます!

2010-08-06 20:12:22
普通のC++使い、銀天すばる @SubaruG

検証するには、 int f( hoge&& ); と int f( hoge const& ); の両方を用意して、 int g(){ hoge h; return f(h); } ってコードで、どっちが呼ばれるかを試せばいいのかな。末尾関数呼び出しで move してくれるかは。

2010-08-06 20:12:42
普通のC++使い、銀天すばる @SubaruG

@melponn そもそも tail call に関する規定自体が、ざっと検索した限り、規格にないんですよね…。

2010-08-06 20:14:35
普通のC++使い、銀天すばる @SubaruG

改めて調べてみるか。そもそも、検索する単語が間違ってるのかなー。

2010-08-06 20:15:11
普通のC++使い、銀天すばる @SubaruG

return で調べるべき? でも候補が多そうだ。

2010-08-06 20:15:30
普通のC++使い、銀天すばる @SubaruG

読む: 6.6.3 The return statement [stmt.return]

2010-08-06 20:16:01
普通のC++使い、銀天すばる @SubaruG

A return statement can involve the construction and copy or move of a temporary object (12.2). ってある。

2010-08-06 20:16:56