2014-06-09 40 views
-3
template<typename T> 
void foo(T&& a) 
{ 
    cout << is_rvalue_reference<T>::value << endl; 
} 

struct O 
{ 
}; 

O o; 
foo(o); //T is deduced to o&,a is O& 
foo(std::move(o)); //T is deduced to O,a is O&& 

大家好。 有沒有辦法讓foo輸出1(T推導爲O & &)?關於完美轉發時的類型扣除

回答

3

否。沒有類型會被推斷爲右值引用類型。推導的類型是左值引用類型或非引用類型。

參考在「通用參考」結構中鍵入輸出爲T &&(不是T)。