圖說函數模板右值引用參數(T&&)類型推導規則(C++11)

見下圖:函數

規律總結:spa

只要咱們傳遞一個基本類型是A的左值,那麼,傳遞後,T的類型就是A&,形參在函數體中的類型就是A&。blog

只要咱們傳遞一個基本類型是A的右值,那麼,傳遞後,T的類型就是A,形參在函數體中的類型就是A&&。模板

另外,模板參數類型推導是保留cv限定符(cv-qualifier,const和volatile限定符的統稱)的,具體例子見《完美轉發和標準庫forward函數》。引用

①這裏指形參在函數體中的實際類型im

②函數返回的不具名左值引用依舊是左值,例如,上面代碼中,Get(3)=5;是能夠的。d3

③具名的右值引用是左值,不具名的右值引用是右值。總結

④這裏,「基本類型是A」意思是:A,A&,A&&及A類型的字面值的基本類型都是A。db

相關文章
相關標籤/搜索