84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
#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&&,感觉不可思议 }
认证高级PHP讲师
没记错的话T是int,val是int&&。你可以看下effective modern c++第一章
写个程序验证一下不就好了
不好意思,刚刚写错了,下面这个才是正确的验证方案。
输出是10和999我才g()里面想输出val,值是10然后在g()修改了val,再回到main输出999说明这里的参数传的是引用,而不是值传递。也就是说 传的是T&
答案是:非常量右值引用。这个问题就是对左右值理解的问题。
没记错的话T是int,val是int&&。你可以看下effective modern c++第一章
写个程序验证一下不就好了
不好意思,刚刚写错了,下面这个才是正确的验证方案。
输出是10和999
我才g()里面想输出val,值是10
然后在g()修改了val,再回到main输出999
说明这里的参数传的是引用,而不是值传递。
也就是说 传的是T&
答案是:非常量右值引用。
这个问题就是对左右值理解的问题。