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