追記:
問題を追加して整理しました。
コメントにあった auto && に関しては、また後ほど触れたいと思います。
問
C++0x において、以下のコード
int f(); int& g(); int&& h(); int main() { auto x0 = 0; int i = 1; auto x1 = i; int const j = 2; auto x2 = j; int a[3]; auto x3 = a; int const b[] = { 1, 2, 3, 4 }; auto x4 = b; auto x5 = f(); auto x6 = g(); auto x7 = h(); auto x8 = f; auto x9 = { 1, 2, 3 }; }
における変数 x0 〜 x9 の定義を、今の定義と等価になるよう auto を使わない形で書き換えなさい。
ただし C++0x の言語仕様は 2011 年 2 月現在における最新ドラフト(N3225)によるものとします。