Учитывая поступившие предложения получается, что сам буфер можно
оставить типа int, а указатель сделать отдельным типом CPtr. В
версии для м/к это будет typedef in t*CPtr; Для этого типа надо
будет написать: CPtr::CPtr(int *) // тут неявное задание границ, т.к. все буферы статические
CPtr::CPtr(CPtr) // не уверен что нужно
int & operator*(CPtr&) // тут проверка выхода за границы
int & operator[](CPtr&, int) // тут тоже проверка выхода за границы
CPtr& operator=(CPtr&)
CPtr& operator+(CPtr&, int)
CPtr& operator-(int)
CPtr& operator++(CPtr&)
CPtr operator++(CPtr&, int)
CPtr& operator--(CPtr&)
CPtr operator--(CPtr&, int)
Остальные арифметические добавлять по мере использования. Выглядит не очень масштабно. Я ни чего не упустил?