const参照返し3

日に日にわかってくることが増えているので今のところまとめ、みたいな感じでw。
http://bit.ly/giW0ee http://bit.ly/hGMpr5 のようにconst &を受け取れば一時オブジェクトの寿命が延びるようです(ただし前の記事でコメントで頂いたような持ち主オブジェクトに対する参照ではない場合、無い場所を参照してしまうことになるようです)。
ここからはすばるさんに教えてもらったことが中心なのですが、const &返し自体は標準ライブラリ等にも含まれているようで、コピーのコストが気になるのなら今後も使っていってよさそうです(そもそもconst参照で一時オブジェクトを受け取ってはならない、と覚えておく)
なので

const int& hoge = std::min(1,0);//undefined behavior

みたいに、const &で受け取ると普通にまずいことが多いようですね。
const T&で受け取るという行為自体が寿命延長性能のせいでバグを生みやすい、といった感じですかね(&&も条件付きで寿命延長効果があるようです)。

後、戻り値のコストはコンパイラのRVO(Retrun Value Optimization)が働けばかなり最適化されるようで、特にconst T&の部分は対応されていればTで受け取っても一緒なようです(?)。実はRVOに関しては一時オブジェクトのそこら辺のところがコンパイラが空気読んで最適化してくれるのだろう、程度しか私は知りません、のであまり言及もしません(ぉ。