原谅标题不好...
所以,通常在这样的函数中:
template <class T>
void f(T&& i){
}
T&&
是通用参考。在这样的上下文中,它是一个右值引用:
template <class T>
struct s{
void f(T&& t){}
};
这是有道理的,因为T
它是一个固定类型s
,它f()
是一个方法。
但是,显然在这种情况下:
template <class T, unsigned n>
std::array<T, n>
f(T&&){
}
T&&
也是一个右值引用。但是,这种情况与上述情况不同。T&&
那么,这里也是右值引用而不是通用引用的原因是什么?