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&amp;&amp;)?
答案 0 :(得分:3)
没有。任何类型都不会被推导为右值引用类型。推导类型是左值引用类型或非引用类型。
引用在&#34;通用引用中输入&#34;构造为T &&
(不是T
)。