4

この会議で、Scott Meyersは、「左辺値は一般に、アドレスを取ることができる式です」と言うことから始めます。私は一般的にその言葉を強調しています:あなたがアドレスを取ることができない左辺値は何ですか?(存在する場合)。

編集:あなたの答えをコードスニペットに提供してください、それは物事をより明確にします。

4

2 に答える 2

7

ビットフィールドはあなたの条件を満たすと思います...私f.xは左辺値だと思いますが、あなたはそれのアドレスを取ることができません。興味深いことに、あなたもできませんauto & x = f.x

C ++ 11セクション8.3.1段落4の一部:ビットフィールド(9.6)のアドレスを取得できないため、ポインタがビットフィールドを指すことはありません。

struct foo {
    int x : 3;
    int y : 3;
    int z : 3;
};

int main() {
    foo f;

    f.x = 3;
}

この他のアイデアについてはさらに確信が持てませんが、標準では、main関数の使用は許可されていないとされています。mainのアドレスを取ることがそれを使用している場合は、それでも十分です。C ++113.6.1段落5。


そして、私が残したコメントから、TIはCおよびC ++コンパイラを拡張してcregister、アドレスを取得できないというストレージクラスが存在することを知っています。(アドレスの概念を持たない物理レジスターを参照しているため)。

于 2012-11-08T20:41:37.310 に答える
0

名前付きシンボルからアドレスを取得できます (例: 対一時インスタンス)。私がこの説明を理解している限り、それが左辺値を構成しているものです。

于 2012-11-08T20:13:44.443 に答える