#include <iostream>
using namespace std;

    template <int n> class SomeClass 
    {
    public:
        void debug() {
            cout << "SomeClass<" << n << ">" << endl;
        }
    };

constexpr int n[5] = { 4, 8, 16, 32, 64 };

template <int i>
struct loop
{
    static void doit()
    {
        SomeClass<n[i]> C;
        C.debug();
        // other things depending on n[i]
        loop<i+1>::doit();
    }
};

template <> 
struct loop<5> 
{    
    static void doit() 
    {
    } 
};

int main() {
    loop<0>::doit();
	return 0;
}
