`std::bitset::reference` 赋值运算符?
`std::bitset::reference` assignment operator?
我正在阅读std::bitset::reference
的documentation,我不太明白为什么,定义了两个赋值运算符:
reference& operator=( bool x );
reference& operator=( const reference& x );
这两个声明是出于优化原因,还是因为编译器生成的复制函数不会有预期的结果?
典型的代理引用 class 存储指向 bitset
的指针(或引用)和所引用位的索引(或与这些等效的内容)。成员复制赋值,如果它编译,很可能只是重新设置 "reference".
但你希望b[0] = b[1]
将第二位的值赋值给第一位,而不是将b[0]
返回的代理引用重新设置为参考第二位。因此需要第二次重载。
我正在阅读std::bitset::reference
的documentation,我不太明白为什么,定义了两个赋值运算符:
reference& operator=( bool x );
reference& operator=( const reference& x );
这两个声明是出于优化原因,还是因为编译器生成的复制函数不会有预期的结果?
典型的代理引用 class 存储指向 bitset
的指针(或引用)和所引用位的索引(或与这些等效的内容)。成员复制赋值,如果它编译,很可能只是重新设置 "reference".
但你希望b[0] = b[1]
将第二位的值赋值给第一位,而不是将b[0]
返回的代理引用重新设置为参考第二位。因此需要第二次重载。