84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
#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&
答案是:非常量右值引用。
这个问题就是对左右值理解的问题。