C++11/14::右值引用
swap
template<typename T>
void swap(T& x, T& y)
{
T tmp(x);
x = y;
y = tmp;
}
使用右值引用或者移動語義的做法:
template<typename T>
void swap(T& x, T& y)
{
T tmp(std::move(x));
x = std::move(y);
y = std::move(tmp);
}
事實上這也正是<utility>給出的swap的實現機制。
相關文章
- C++11 左值引用和右值引用與引用摺疊和完美轉發C++
- 左值、左值引用、右值、右值引用
- 右值引用
- 左值、右值、左值引用,右值引用,std::move函式函式
- 透徹理解C++11新特性:右值引用、std::move、std::forwardC++Forward
- C++左值引用與右值引用C++
- C++ 右值引用和左值引用C++
- c++ 左值引用與右值引用C++
- C++右值引用C++
- [c++11]我理解的右值引用、移動語義和完美轉發C++
- 對C++11中的`移動語義`與`右值引用`的介紹與討論C++
- C++ 左值引用和右值引用之間的轉換C++
- C++11之右值引用、移動語義C++
- 右值引用,移動語義,完美轉發
- c++11-17 模板核心知識(十)—— 區分萬能引用(universal references)和右值引用C++
- C++智慧指標之shared_ptr與右值引用(詳細)C++指標
- JavaScript 左值與右值JavaScript
- C++11中std::move、std::forward、左右值引用、移動建構函式的測試C++Forward函式
- C++ 左值和右值C++
- 一段小程式碼秒懂C++右值引用和RVO(返回值優化)的誤區C++優化
- 使用 ref 引用值
- C筆記-左值與右值筆記
- 值傳遞和引用傳遞
- 值型別和引用型別型別
- GO切片傳值/引用/指標Go指標
- javascript原始值和引用值型別及區別JavaScript型別
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- C#7.0--引用返回值和引用區域性變數C#變數
- JavaScript值型別和引用型別JavaScript型別
- shared_ptr 傳值和傳引用
- c#:值型別&引用型別C#型別
- C++11獲取double型別的最大最小值C++型別
- C++霧中風景10:聊聊左值,純右值與將亡值C++
- [CPP] 左值 lvalue,右值 rvalue 和移動語義 std::move
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- 問題分享:Js引用型別賦值JS型別賦值
- 迴歸本源:JavaScript 之中的值和引用JavaScript
- JavaScript的值傳遞和引用傳遞JavaScript