簡體   English   中英

何時在`std :: move()`函數中調用移動構造函數?

[英]When is the move constructor called in the `std::move()` function?

函數std::move()定義為

template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{ 
    return static_cast<typename std::remove_reference<T>::type&&>( t ); 
}

有四個地方我可以想象要調用的移動構造函數:

  1. 參數傳遞時。
  2. 演員表演時。
  3. 返回結果時。
  4. 不在std::move()函數本身,但可能在返回的引用最終到達的位置。

我敢打賭4號,但我不是百分百肯定,所以請解釋你的答案。

沒有移動建設正在進行中。 std::move()接受引用並返回引用。 std::move()基本上只是一個演員。

你的猜測4.是正確的(假設你實際上是在調用一個移動構造函數)。

std :: move只是一個類型轉換,它告訴編譯器該類型是一個右值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM