关于右值引用
template<typename T>
void fun(T&& t)
{puts(t.data());}
//上面的代码成功
/*这样就不行
void fun(std::string&& str)
{puts(str.data());}
*/
int main() {
std::string strr("123");
fun(strr); //如果用第二种方式,则编译不过
return 0;
}
请问这是为什么?
[解决办法]
模版参数T的类型推导为std::string&,则T&&即std::string& &&坍缩为std::string&(左值引用)。
[解决办法]