关于完美转发时的类型扣除

时间:2014-06-09 20:03:09

标签: c++11 rvalue-reference

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;)?

1 个答案:

答案 0 :(得分:3)

没有。任何类型都不会被推导为右值引用类型。推导类型是左值引用类型或非引用类型。

引用在&#34;通用引用中输入&#34;构造为T &&(不是T)。