【发布时间】:2016-11-02 18:54:16
【问题描述】:
请原谅这个糟糕的标题...
所以,通常在这样的函数中:
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&& 在这里也是右值引用而不是通用引用的原因是什么?
【问题讨论】:
-
你能改写一下吗?我不明白你在说什么。
-
你为什么说
T&&在这种情况下是一个右值引用?
标签: c++ rvalue universal-reference