`std :: bitset :: reference`赋值运算符?

时间:2015-09-20 23:06:22

标签: c++ c++11 std assignment-operator bitset

我正在阅读std::bitset::reference的{​​{3}},我不确定为什么,定义了两个赋值运算符:

reference& operator=( bool x );
reference& operator=( const reference& x );

这两个声明是出于优化原因,还是因为编译器生成的复制函数没有预期的结果?

1 个答案:

答案 0 :(得分:4)

典型的代理引用类存储指向bitset的指针(或引用)以及引用的位的索引(或等效于这些的索引)。成员复制分配,如果编译,很可能只是重新安装“参考”。

但是您希望b[0] = b[1]将第二位的分配给第一位,而不是重置b[0]返回的代理引用以引用第二位。因此需要第二次过载。