c++ - 接受右值引用参数的模板函数

浏览:32日期:2023-05-24

问题描述

#include <iostream>#include <type_traits>template<typename T>void g(T&& val);int main() { int i = 0; const int ci = i; g(i*ci);//请问这里模板实例化的T是int还是int&&?我认为是int,但很多地方说是int&&,感觉不可思议}

问题解答

回答1:

没记错的话T是int,val是int&&。你可以看下effective modern c++第一章

回答2:

c++ - 接受右值引用参数的模板函数写个程序验证一下不就好了

不好意思,刚刚写错了,下面这个才是正确的验证方案。

c++ - 接受右值引用参数的模板函数输出是10和999我才g()里面想输出val,值是10然后在g()修改了val,再回到main输出999说明这里的参数传的是引用,而不是值传递。也就是说 传的是T&

回答3:

答案是:非常量右值引用。这个问题就是对左右值理解的问题。

c++ - 接受右值引用参数的模板函数

相关文章: