3

C++11 では、型の違いTreference to T、それらが変数に名前を付ける式に適用されるため、多少混乱しています。具体的には次のことを考慮してください。

int main()
{
    int x = 42;
    int& y = x;

    x; // (1)
    y; // (2)
}

x上記の(1)の式の型は何ですか? intそれとも?lvalue reference to int_ (その値カテゴリは明らかに ですlvalueが、これはその型とは別のものです)

y同様に、上記の(2)の式の型は何ですか? intそれとも?lvalue reference to int_

5.1.1.8 には次のように書かれています。

[識別子一次式] の型は、識別子の型です。結果は、識別子によって示されるエンティティです。エンティティが関数、変数、またはデータ メンバーである場合、結果は左辺値であり、それ以外の場合は prvalue です。

4

2 に答える 2