#include struct Null { }; template struct TypeList { typedef H Head; typedef T Tail; }; template struct IntChooser; template struct IntChooser { typedef typename T::Head Type; }; template struct IntChooser { typedef typename IntChooser::Type Type; }; typedef TypeList > > > > IntTypes; template struct Int { typedef typename IntChooser::Type Type; }; typedef Int<8>::Type Int8; typedef Int<16>::Type Int16; typedef Int<32>::Type Int32; typedef Int<64>::Type Int64; using namespace std; int main() { cout<<"sizeof(Int8) == "<