6

私はC++ Primer、第5版を読んでいます。71 彼らは最初にこのコード例を示します:

const int ci = 0, &cj = ci;
decltype(ci) x = 0;
decltype(cj) y = x;
decltype(cj) z; //error

それから彼らは言う:

decltype参照として定義された変数が参照先のオブジェクトの同義語として扱われない唯一のコンテキストであることに注意してください。

これはどういう意味ですか?理解できません。そこyは を指しxます。それで、キャッチは何ですか?

4

1 に答える 1

10

decltype(cj)を参照するオブジェクトの型cj(つまり、const int) を提供するのではなく、それ自体の型を提供すると彼らは言おうとしていると思いますcj。そうyなりますconst int&

これを比較するケースは、式で参照の名前を使用する場合です。標準は次のように述べています。

式が最初に「T への参照」型 (8.3.2、8.5.3) を持っている場合、その型は、さらなる分析の前に T に調整されます。式は参照によって示されるオブジェクトまたは関数を指定し、式は式に応じて左辺値または x 値です。

つまり、式で参照の名前を使用する場合、作用するのは参照ではなく、それが参照するオブジェクトです。これが、参照型に「エイリアス」の機能を与えるものです。

于 2013-01-16T17:51:55.900 に答える