rvalue, lvalueについて
なんだかあまり使わないからすぐに忘れるんですよね。ということで大事なところだけ書いておこう。
まず、rvalueってのは一時的に生成される無名のオブジェクトのこと。lvalueっていうのは実体のある名前付きのオブジェクトのこと。
rvalue referenceというのもある。これは、もう使わないからポインタすげかえちぇばいいや、ってときに使える表現。
rvalue は一時的でそれ以上使わないから、あるオブジェクトをrvalue referenceで受け取ってもらってそのポインタもらっちゃっていいよ~っていう意思表示として使う。
そのrvalue referenceで受け取るというのを表現するのにstd::move()を用いる。
また、argument deducationというのもあり、template
overload関数の増大を阻止。
最後に、argument deducationゆえに、もしtemplate
だから、引数をそのまま、rvalueならrvalue、lvalueならlvalueとして伝搬したいときがあるだろう。そこで使うのがstd::forwardである。
と、肝心なのはこれだけらしい。