試しに繰り返しを使わず配列の初期化をやってみよう。
template <int i>
class A{
public:
template<typename T>
static inline void foo(T* p){ *p = 0; A<i-1>::foo(p+1); }
};

int x[10];
A<10>::foo(x);
これでどうだ。・・・あんまり意味なさげ。