タグ

Rvalue Referencesに関するcrafのブックマーク (7)

  • C++右辺値参照解説 | taro-nishinoの日記 | スラド

    正直に言って、私の周辺には"右辺値参照の簡単入門"は難解過ぎました。C++を知っているはずと私が思っていた人でも、基礎固めをしっかりしなかったのか、グラグラしてました。そのような生半可では太刀打ち出来ないでしょう。もう一つの要因として、Bjarne Stroustrup博士の専門的著述は、トリビアルなことはストイックなまでに殆ど無口です。その反面トリビアルでないことには饒舌です。プロなら一を聞いて十を知れ、というところでしょうか。 いずれにせよ、もう少しやさしいものを紹介すべきでした。「入門の入門」ということで、Thomas Becker博士の"C++ Rvalue References Explained"を紹介します。この記事はトリビアルなことでも懇切丁寧に説明しています。もし、これでも歯が立たないのであれば、C++98又はC++03の基礎をしっかりやり直すことをお勧めします。その基礎

  • rvalue Reference is not an rvalue

    rvalue referenceは、rvalueではない。私は今まで、これを深く考えたことはなかった。一体どういうことなのか。 int a ; // Error int && b = a ; // OK. the same thing std::move() does. int && c = static_cast< int && >(a) ; // Error. Why? int && d = c ; bはエラーになるのは、常識でも理解できる。しかし、なぜdがエラーになるのか。まったく同じ型ではないか。また、こんな例もある。 // lvalue reference void f( int & ) {} // rvalue reference void f( int && ) {} int main() { int x = 0 ; int && ref = std::move(x) ; /

  • ref-qualifier: rvalue referenceの完全を期すための補足

    rvalue reference 完全解説で、rvalue referenceは、ほぼ解説した。ところが、うっかりしたことに、ひとつだけ忘れていた事項があったので、それを解説する。 それは、非静的なメンバ関数に、ref-qualifierがつけられるというものだ。例を挙げる。 struct Foo { void f() & {} void f() && {} } いったいこれは何なのか。これは、thisに対する修飾である。thisは、C++では、歴史上の理由でポインタになっているが、来、参照となるべきであった。thisが指し示すのは、そのクラスのオブジェクトである。 struct Foo { void f() {} } ; int main() { Foo a, b ; a.f() ;// thisは、aを指す。 b.f() ;// thisは、bを指す。 } つまり、非静的なメンバ関数

  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

  • rvalue referenceについて

    VC10のrvalue referenceの実装が、*thisを含まないという但し書きがあるのをみて、ぱっと*thisへの参照がlvalueなのかrvalueなのかが問題なのだというのを思いつけなかったのは、情けない。これは自分のrvalue referenceへの理解が足りないためだ。rvalue referenceについても、よく知っているはずだったのに、実に情けない。そこで、rvalue referenceについて解説してみることにした。 まず、lvalueとrvalueの違いについて述べる。この違いを、言葉で説明するのは難しい。むしろ、コードで説明した方が分かりやすい。 int f() { return 0 ; } void g() { int a = 0 ; a ; // lvalue 0 ; // rvalue int(0) ; // rvalue f() ; // rvalu

  • Move Constructors

    Move Constructors By Andrei Alexandrescu, February 01, 2003 This article introduces Mojo, a compact framework for eliminating unnecessary copying of temporary objects. Mojo features 100% elimination of unnecessary copies if you operate minimal changes to source code and observe some simple rules. If you ever wished to return objects from functions, improve the string manipulation speed of your app

    craf
    craf 2008/09/11
    久しぶりに見たらCUJからアドレス変わってた。
  • artima - A Brief Introduction to Rvalue References

    by Howard E. Hinnant, Bjarne Stroustrup, and Bronek Kozicki Rvalue references is a small technical extension to the C++ language. Rvalue references allow programmers to avoid logically unnecessary copying and to provide perfect forwarding functions. They are primarily meant to aid in the design of higher performance and more robust libraries. This document gives a quick tour of the new C++ languag

  • 1