0
我下一個片段從microsoft的std ::移動實現
template <typename T> struct RemoveReference {
typedef T type;
};
template <typename T> struct RemoveReference<T&> {
typedef T type;
};
template <typename T> struct RemoveReference<T&&> {
typedef T type;
};
template <typename T> typename RemoveReference<T>::type&& Move(T&& t) {
return t;
}
...
remote_integer x = frumple(5);
remote_integer&& x1 = Move(x);
,我得到一個錯誤「錯誤C2440: '迴歸':無法從 'remote_integer' 轉換到'remote_integer & &''
在編譯器中有所改變嗎?隨着std :: move一切順利。
移動只接受一個右值,x是一個左值。你必須使用stdmove(小寫)。 – RedX
http://social.msdn.microsoft.com/Forums/en-US/vs2010ctpcpp/thread/ab120b3c-4ecf-4a0d-8f64-f24925ac39a9/ - Jonathan Caves(Visual C++編譯器團隊)編寫實現std :: move和我的Move一樣。並移動我從微軟網站抓住,在問題的鏈接?那裏沒有問題,但是在VC10中它不起作用。 – Yola
模板類型名稱RemoveReference ::類型&&移動(T && T){ 回報(RemoveReference ::類型&&)t; } - 現在一切工作正常,一些與類型轉換這裏 –
Yola