Я хотел бы оптимизировать мой код, перегружая оператор скобки [] в std :: array, который я использую везде, вычитая один. Код компилируется, но никогда не вызывает перегруженную функцию, может кто-нибудь сказать мне, почему?
#include <iostream>
#include <array>
class A
{
std::array<int,5> var{0, 1, 2, 3, 4};
std::array<int, 5ul>::value_type& operator[](std::size_t p_index);
};
std::array<int, 5ul>::value_type& A::operator[](std::size_t p_index)
{
return var[p_index - 1];
}
int main()
{
A a;
std::cout << a.var[1] << std::endl;
}
Код возвращает «1», но я ожидаю «0».
Заранее спасибо!