Listing 7

template<unsigned short Dim, unsigned short Order,
         unsigned short Num>
struct BasicList3
{
  typedef Typelist<
          Typelist<typename Monomial<Dim,Order-Num+1>::Result,
                   typename BasicTerm<Dim,Order>::Result>,
          typename BasicList3<Dim,Order,Num-1>::Result> Result;
};
template<unsigned short Dim, unsigned short Order>
struct BasicList3<Dim,Order,0>
{
   typedef UnitType Result;
};