以下のコードは、問題なくコンパイルおよび実行されます。右辺値参照と 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
私の主な問題は、コンパイラが関数 fn 内の「n」をどこに格納するかです。