为什么std :: slice_array :: operator = const?

时间:2018-02-07 17:28:01

标签: c++ const slice member-functions valarray

std::slice_array的{​​{3}}是const成员函数,但为什么会这样设计呢?

可能原因是std::slice_array被设计为代理类,并且这些赋值运算符只修改引用的元素而不修改代理类本身,因此它们是const成员函数是合理的。但是,为什么std::slice_array All overloads of assignment operators不是 const成员函数?

1 个答案:

答案 0 :(得分:3)

对于第一个问题,slice_array只是一个代理类。它具有引用语义,因此任何操作都不会修改其实际成员,因此标记所有const可以提供更多可用性。

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