对位域值的引用常量
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。
创建位域值的引用 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。