【发布时间】:2022-10-07 17:44:19
【问题描述】:
例如,std::slice_array 的赋值运算符:
void operator=(const valarray<T>&) const; //#1
void operator=(const T&) const; //#2
const slice_array& operator=(const slice_array&) const; //#3
#1 和 #2 返回 void,但 #3 返回 const slice_array&。
它禁止一些合理的代码,例如:
std::valarray<int> va{1, 2, 3, 4, 5, 6};
va[std::slice(3, 2, 2)] = va[std::slice(0, 2, 2)] = va[0];
为什么?
标签: c++ assignment-operator valarray