この記事は C++11 Advent Calendar 14日目の記事です。 何がわかりにくいのか C++11から正式に導入される新機能である、move semanticsとrvalue referenceですが、なかなかこれを理解出来ないという人が多いようです。 ちょっと考えればなるほど、と思いますが私が思うにこのわかりにくい最大要因はやはりその名前のせいかと思います。 特にrvalue referenceですが、日本語に訳すと右辺値参照という呼ばれ方をしています。 そもそも右辺値や左辺値という名称はC言語時代の流れでそのまま引き継いでいるものであり、右辺値参照という名称は言わば後付けで名称されたものです。 実際に使用する際に右辺値なのか左辺値なのかを意識している人は殆どおらず、これが余計な混乱を招いているのではないかと思います。 ではコードを書いてみて理解しましょう。 lvalueとr