Проблема в том, что вы не проверяете индекс вне диапазона в вашей double&
версии operator()
.
Вы, вероятно, не можете гарантировать, что data[i]
указывает на действительный адрес памяти для достаточно большого i
. Вы должны либо проверить индекс вне диапазона и выдать какое-то исключение, либо изменить размер вектора (выделив больше памяти, сделайте data
), чтобы иметь возможность хранить больше значений.