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++
- C++11中的右值引用C++
- C++11 左值引用和右值引用與引用摺疊和完美轉發C++
- C++11 中的右值引用與轉移語義C++
- 透徹理解C++11新特性:右值引用、std::move、std::forwardC++Forward
- C++左值引用與右值引用C++
- c++ 左值引用與右值引用C++
- C++右值引用C++
- [c++11]我理解的右值引用、移動語義和完美轉發C++
- 對C++11中的`移動語義`與`右值引用`的介紹與討論C++
- C++11之右值引用、移動語義C++
- C++ 11 中的右值引用C++
- C++11 新特性之右值引用與轉移語義C++
- Google C++ Coding Style:右值引用(Rvalue Reference)GoC++
- c++11-17 模板核心知識(十)—— 區分萬能引用(universal references)和右值引用C++
- C++智慧指標之shared_ptr與右值引用(詳細)C++指標
- JavaScript 左值與右值JavaScript
- C++11中std::move、std::forward、左右值引用、移動建構函式的測試C++Forward函式
- 一段小程式碼秒懂C++右值引用和RVO(返回值優化)的誤區C++優化
- C筆記-左值與右值筆記
- c++中的左值與右值C++
- 左值右值的一點總結
- 值物件與引用物件物件
- 這裡是值引用還是指標引用?指標
- 值型別和引用型別型別
- 值傳遞和引用傳遞
- GO切片傳值/引用/指標Go指標
- 值傳遞與引用傳遞
- 值型別與引用型別型別
- javascript原始值和引用值型別及區別JavaScript型別
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- JavaScript值型別和引用型別JavaScript型別
- c#:值型別&引用型別C#型別
- JAVA 物件引用,以及物件賦值Java物件賦值
- JAVA值傳參和引用傳參Java
- Swift值型別和引用型別Swift型別
- 給物件引用變數賦值(轉)物件變數賦值