下面的代码编译并运行得很好。就在我认为我开始对右值引用和 std::forward 有了不错的掌握时 - 这个非常简单的代码揭示了我不理解的关于右值的一些非常基本的东西。请澄清。
#include <iostream>
#include <iomanip>
using namespace std;
void fn( int&& n )
{
cout << "n=" << n << endl;
n = 43;
cout << "n=" << n << endl;
}
int main( )
{
fn( 42 );
}
我使用以下命令行使用 g++ 4.7 编译它:
g++ --std=c++11 test.cpp
输出为:
n=42
n=43
我的主要问题是编译器将“n”存储在函数 fn 中的什么位置?