Listing 12

// Nested loops with For<>

// templates for inner loop
template<typename state>
struct  incr_in  { ... };

template<typename state>
struct  cond_in { ... };

// templates for outer loop
template<typename state>
struct  incr_out { ... };

template<typename state>
struct  cond_out { ... };

// body of inner loop (i.e one iteration)
template <typename state >
struct body
{
    typedef state result;
    static void exec() { ... };
};
// simulate template typedef (a feature forthcoming in C++0x)
template <typename T>
struct inner_loop
{
    typedef T result;
    static void eval()     {
          For_< cond_in, incr_in, body, T>::exec();
    }
};
// nest  "inner_loop" into For<>
For_< cond_out, incr_out, inner_loop, state<...> >::eval() ;