什么样的左值可以不采取地址?

qdi*_*dii 4 c++ lvalue c++11

这次会议上,斯科特迈耶斯首先说"低价值通常是你能得到的地址".我一般都在强调这个词:什么是你不能拿地址的左值?(如果存在).

编辑:请提供您的答案的代码片段,它使事情更清楚.

Bil*_*nch 7

我认为bitfields满足你的条件...我相信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;
}
Run Code Online (Sandbox Code Playgroud)

我对这个其他想法更不确定,但标准说你不允许使用主要功能.如果使用main的地址正在使用它,那么这也足够了.C++ 11 3.6.1第5段.


从我离开的评论中,我知道TI扩展了他们的C和C++编译器,因此存在一个名为" cregister你不能接受地址"的存储类.(因为它指的是物理寄存器,它没有地址的概念).