Why I can't re-set the value of a reference but I can do that if the reference is a function parameter? For example the following code will work without a problem:
void foo(int& i)
{
}
int main()
{
int i; foo(i);
int j; foo(j);
return 0;
}