对位域值的引用常量

Reference const to bitfield value

创建位域值的引用 const 是否安全? 看看下面的例子

typedef struct
{
    int a:1;
}x_t;

int main() {
   x_t x;
   bool const &  x2 = x.a; 
}

Is it safe to create a reference const to a bitfield value?

是的,就像你写的一样,例如:

bool const& x3 = 42;

在您的代码中,采用了 x.a 的值,并创建了一个 bool 类型的临时对象,并为其分配了 x.a 的值,然后将引用绑定到那个临时对象。所以这就像创建一个 x.a 的当前值作为 bool 类型的“视图”(它是 const)。在过于简化的情况下,假设它的工作原理如下:

const bool _some_hidden_temporary = x.a;
bool const& x2 = _some_hidden_temporary;

您将得到一个 const& 临时文件。如果您切换 x_t 中的位,它将不会通过 const& (x2) 反映出来。

临时的生命周期是x2的生命周期(main结束)。

如果不实现某种代理,就不能引用单个位(在位域中)class。