この質問は、すべての一時的な値が右辺値であるかどうかを尋ねます。
この表現を考えると、答えはノーです。
const int &ri = 2 + 3;
次に、ここでは右辺値であるまったく同じ一時(2 + 3)
値を、後続の式の左辺値として使用できます。
const int *pi = &ri;
したがって、この一時的な値は(唯一の)右辺値ではありません。
その場合、論理ステートメントtemporary ==> rvalue
はfalseになります。
ただし、書くことはできません
const int &ri = &(2 + 3); // illegal, 2 + 3 -> temporary -> rvalue
また
int *i = &4; // illegal, 4 is an rvalue (literal)
また
int foo();
int *i = &foo(); // illegal, foo() -> temporary -> rvalue
したがって、私の質問は、一時的またはリテラルを持たずに、特定の式で右辺値を生成できるかどうかです。rvalue ==> (temporary or literal)
本当ですか?