История изменений
Исправление lwo, (текущая версия) :
По const
-ности объекта, на котором метод вызывается. Его квалификация и категория значения тоже часть сигнатуры и важны при выборе перегрузки наравне с аргументами.
То же самое, что перегрузки вида
template<typename T>
struct Array {
...
T& operator[](size_t index);
const T& operator[](size_t index) const;
};
В C++23 это даже окончательно признали и большей частью убрали необходимость в дупликации кода (которая в некоторых случаях может быть далеко не двойная), а попутно решили ещё несколько проблем. См. deducing this
.
Исходная версия lwo, :
По const
-ности объекта, на котором метод вызывается. Его квалификация и категория значения тоже часть сигнатуры и важны при выборе перегрузки наравне с аргументами.
То же самое, что перегрузки вида
template<typename T>
struct Array {
...
T& operator[](size_t index);
const T& operator[](size_t index) const;
};