#include <iostream>

using namespace std;


template< typename First, typename Rest >
struct cons
{
    typedef First first;
    typedef Rest rest;
};

struct nil {};

typedef
      cons<int
    , cons<long
    , cons<double
    , nil
    > > > my_types;


int main()
{
    my_types test;


    return 0;
}
