首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于右值引述

2012-10-16 
关于右值引用templatetypename Tvoid fun(T&& t){puts(t.data())}//上面的代码成功/*这样就不行void fu

关于右值引用
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&(左值引用)。
[解决办法]

探讨
模版参数T的类型推导为std::string&amp;,则T&amp;&amp;即std::string&amp; &amp;&amp;坍缩为std::string&amp;(左值引用)。

热点排行