#include <iostream>
template<int I, int N,class F>
struct for_
{
for_()
{
body_(I,N);
for_<I+1,N,F> next;
}
F body_;
};
template<int N, class F> struct for_<N,N,F> {};
struct display
{
void operator()(int i,int n) { std::cout << i << std::endl; }
};
int main()
{
for_<0,10,display> do_it;
}