つづき

#include <iostream>
#include <typeinfo>

typedef Append<Nil , unsigned char >::type UC;
typedef Append<UC , unsigned short>::type UCS;
typedef Append<UCS , unsigned int >::type UCSI;
typedef Append<UCSI, unsigned long >::type unsigned_ints;

void print(std::ostream& s, Nil)
{}

template<class X, class Xs>
void print(std::ostream& s, List<X, Xs>)
{
s << typeid(X).name() << std::endl;
print(s, Xs());
}

int main()
{
print(std::cout, unsigned_ints());
return 0;
}