私はC ++の式のタイプを理解しようとしますが、C ++ドラフトを消化するのは非常に難しく、したがって他のリソースを好むので、読むほど混乱します。 C ++バージョン間の表現と定義が大幅に変更されています。
以下では、以下のドラフトを参照します。
C++11
3.10左辺値と右辺値... prvalue(「純粋な」右辺値)は、x値ではない右辺値です。[例:戻り値の型が参照ではない関数を呼び出した結果は、prvalueです。12、7.3e5、trueなどのリテラルの値もprvalueです。—最後の例]
C++17
3.10左辺値と右辺値... prvalueは、評価によってオブジェクトまたはビットフィールドを初期化するか、演算子のオペランドの値を、それが出現するコンテキストで指定されたとおりに計算する式です。
C++20
7.2.1値のカテゴリ*... prvalueは、その評価がオブジェクトまたはビットフィールドを初期化する式、または演算子のオペランドの値を、それが出現するコンテキストまたはcv void型の式で指定されているように計算する式です。
言い回しの変更を理解し、いくつかの調整が行われますが、私にとっては定義全体が変更されます。誰かがこれを理解するのを手伝ってくれる?たとえば、prvalueがxvalueではないrvalueであるという文が削除されたのはなぜですか?または、なぜ役立つ例が削除されたのですか?