template <class T, unsigned int N> struct Array {
T elements[N];
// コンストラクタデストラクタは書かない
T & operator [] (unsigned int n) {
if(n < N) return elements[n] else throw out_of_range("out_of_range");
}
// 以下略
} ;

たぶんこれでいけると思うよ