>155
いや,なのでそうとだけ書いておきさえすれば

(1)コンパイラが RVO を適用できるならする
(2)hoge が move constructor を持っているならば return で move を使う
(3)コピー

というのを上から順に適用していって可能なものを採用すると思います.
(2) は, return temp; という文においては temp が自動変数なので,
まず temp を自動的に右辺値として取り扱おうとするはずだからです.