Рассмотрим задачу записи индексируемого класса, который автоматически синхронизирует его состояние с каким-либо внешним хранилищем данных (например, с файлом). Для этого класс должен быть проинформирован об изменениях индексированного значения, которое может произойти. К сожалению, обычный подход к перегрузке оператора [] не позволяет этого, например...
Type& operator[](int index)
{
assert(index >=0 && index < size);
return state[index];
}
Есть ли способ различать доступное значение и изменяемое значение?
Type a = myIndexable[2]; //Access
myIndexable[3] = a; //Modification
Оба этих случая возникают после возвращения функции. Есть ли другой подход к перегрузке оператора [], который, возможно, имеет больше смысла?