考虑以下代码:
#include <iostream>
#include <functional>
using namespace std;
template<class T>
void fun(T t)
{
t+=8;
}
int main()
{
int i = 0;
fun(ref(i));
cout << i << endl;
}
此代码打印“8”。我假设 fun() 中的 t 会自动转换为 int&。
但是如果我用 替换t+=8
,t=8
程序将无法编译。
为什么?