const_castもどきオブジェクトの皮一枚を被せればいいんじゃないかな
やった事無いし、オーバーロードが面倒で反ってラビリンスな感じだけど
struct array{
int *p;template<typename T>struct eqint{T v;const eqint<T>&operator=(T a){v=a;return *this;}operator const T()const{return v;}};
eqint<int>&operator[](size_t t)const{return *reinterpret_cast<eqint<int>*>(p+t);} };