私の理解は間違っています。移動のポイントは、T または T& オーバーロードの代わりに T&& を強制することだと思いました。サインは
template typename remove_reference::type&& move (T&& arg) noexcept;
また、T&& は、参照が範囲外であることを意味することを除いて、T& と同じものだと思いました。私の理解では、画像のコードは安全なはずです。
rv.append は、新しいコピーを作成するか (範囲外になります)、範囲外になる rv を再利用します。移動があるため、実装がコピーを作成すると思いました。次に、再度追加してから移動します。それが戻ったとき、一時への参照であるため、一時がどこから来たのかがわからず、スタックにコピーしてその寿命を延期する必要があると思いました。
しかし、私は間違っていて、修正は画像とともにそこに書かれています。なぜそのように機能しないのですか?私が思ったように T&& は参照渡しですか?Rvalue 参照について他に知っておくべきことはありますか?
std::unique_ptr<T> make_unique1(U&& u)
また、この例で2つの異なる関数を呼び出す方法もわかりません