为什么 std::slice_array::operator= 常量?

Why is std::slice_array::operator= const?

std::slice_array

All overloads of assignment operators都是const成员函数,但是为什么要这样设计呢?

可能是因为std::slice_array被设计成一个代理class,而这些赋值运算符只是修改引用的元素,而没有修改代理class本身,所以它们是合理地成为 const 成员函数。但是,为什么 std::slice_arraythose compound operators 不是 const 成员函数?

对于第一个问题,slice_array只是一个代理class。它具有引用语义,因此其实际成员的 none 会被任何操作修改,因此标记所有内容 const 可以提高可用性。

对于第二个问题,所有运算符 都是 声明的 const(根据 current working draft and back to C++11)。与赋值运算符为 const 的原因相同。这只是 cppreference 错误识别它们的错误。发生。