tag:blogger.com,1999:blog-3636872937372639901.post4765377667151853616..comments2024-03-27T21:24:43.584+09:00Comments on 本の虫: rvalue reference 完全解説江添亮http://www.blogger.com/profile/13387122818743087721noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3636872937372639901.post-58690005502040542002020-05-10T14:51:56.357+09:002020-05-10T14:51:56.357+09:00とてもわかりやすかったです!
template の部分に関しては、引数を受け取った時点でそれはもとが...とてもわかりやすかったです!<br />template の部分に関しては、引数を受け取った時点でそれはもとが右辺値であれ左辺値であれ、左辺値になってしまうので、もとが右辺値の参照であった場合に限り、move する必要があり、それは forward で達成できるということなのですね。<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-41663902967563777342020-04-17T20:47:28.700+09:002020-04-17T20:47:28.700+09:00rvalue参照とは何なのかずっと疑問を抱いていたのですが、この記事を見てそれがすっきりしました。
...rvalue参照とは何なのかずっと疑問を抱いていたのですが、この記事を見てそれがすっきりしました。<br />本当にありがとうございます。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-69443681748710439792020-04-03T21:59:56.032+09:002020-04-03T21:59:56.032+09:00なるほど、全然わからないなるほど、全然わからないAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-80716297751942215512017-12-28T21:43:23.679+09:002017-12-28T21:43:23.679+09:00なんか、英語を日本語に翻訳したような文章が不自然で読みにくいです。格好いいかもしれないけど、判りにく...なんか、英語を日本語に翻訳したような文章が不自然で読みにくいです。格好いいかもしれないけど、判りにくいなぁ。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-51322097299312962482011-08-12T15:22:26.825+09:002011-08-12T15:22:26.825+09:00X( X const & r )
{
ptr = new char[1000] ;
st...X( X const & r )<br />{<br /> ptr = new char[1000] ;<br /> std::copy( &ptr[0], &ptr[1000],<br /> &r.ptr[0] ) ;<br />}<br /><br />上記の部分は、ひょっとして、<br />{<br /> ptr = new char[1000] ;<br /> std::copy( &r.ptr[0],<br /> &r.ptr[1000],<br /> &ptr[0] ) ;<br />}<br />の間違いでしょうか??<br /><br />std:copy() って、引数のうち、左の2つが src, 一番右がdst ですよね。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-851880086437307232009-11-24T01:27:25.052+09:002009-11-24T01:27:25.052+09:00そんなことありませんよ。
rvalue referenceは単純です。
たんなるrvalueへの参照...そんなことありませんよ。<br />rvalue referenceは単純です。<br />たんなるrvalueへの参照なのです。<br />Move SemanticsとかPerfect Forwardingとか、いかにも仰々しく名付けているけれど、<br />その本質はキャストに過ぎないのです。<br /><br />D&Eのような歴史書が読みたければ、<br />公開されているペーパーを追いかければいいのです。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-77147131619659647162009-11-23T21:45:10.932+09:002009-11-23T21:45:10.932+09:00これは・・・・さすがに難しい
C++0xのD&Eを書いてもらってそれをじっくり読まないとだめ...これは・・・・さすがに難しい<br />C++0xのD&Eを書いてもらってそれをじっくり読まないとだめかも<br />わたすは画面上に書いてある文を読み解くのは苦手なんです<br />本を寝っ転がって読むと不思議と頭に入るんですね萌ゑnoreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-77702569772620077382009-11-23T18:22:36.644+09:002009-11-23T18:22:36.644+09:00あれ、最新ドラフトに矛盾がありますね。
§ 8.5.3 References p5では、確かに
&...あれ、最新ドラフトに矛盾がありますね。<br />§ 8.5.3 References p5では、確かに<br /><br />>the reference shall be an rvalue reference and the initializer expression shall be an rvalue.<br /><br />と書いてあるのに、<br /><br />§ 5 Expressions p6のコード例で、rvalue referenceにlvalueを代入している。<br />しかし、どうも文脈から判断するに、コード例が間違っているような気がします。江添亮https://www.blogger.com/profile/13387122818743087721noreply@blogger.comtag:blogger.com,1999:blog-3636872937372639901.post-88669448561653061602009-11-23T15:56:38.399+09:002009-11-23T15:56:38.399+09:00> // rvalue reference
> X && rr1 = x...> // rvalue reference<br />> X && rr1 = x ; // 3. Error<br />> X && rr2 = X() ; // 4. OK<br /><br />あれ?3はOKだったはずじゃ…と思ったら今はドラフトの文言変わってダメになってたんですね。<br />gcc4.4.1ではコンパイル出来ちゃいます。Anonymousnoreply@blogger.com