あなたはstatic_cast<A &&>(a)
を使用することができますを見つけるために、テキスト・エディタで検索を使用することができます右値ですが、std::move(a)
は使用しないでください。
A && a = std::move(A())
を使用すると、手間のかかる参照が発生します。
基本的な考え方は、一時的にバインドされた参照から初期化された第2の参照は、その存続時間に影響しないということです。
std::move
の実装では、彼らは同じものですが、動きが発生しやすい小さい誤差でやや
template <typename T>
constexpr decltype(auto) move(T && __t) noexcept // when used in std::move(A()),
// the lifetime of the temporary object is extended by __t
{
return static_cast<typename std::remove_reference<T>::type &&>(__t); // a xvalue returned, no lifetime extension
}
auto && a = std::move(A()); // the anonymous object wiil be destructed right after this line
のようなものです。 – user1353535