Listing 8
template<unsigned short Dim, unsigned short Order,
unsigned short CurVar, unsigned short Num>
struct ShapeBasis
{
private:
typedef typename NL::AddAt<
typename Monomial<Dim,Order>::Result,CurVar,1>::Result T1;
typedef typename Monomial<Dim,1-Num>::Result T2;
public:
typedef Typelist<TYPELIST_2(T1,T2),
typename ShapeBasis<Dim,Order,CurVar,Num-1>
::Result> Result;
};
template<unsigned short Dim, unsigned short Order,
unsigned short CurVar>
struct ShapeBasis<Dim,Order,CurVar,0>
{
typedef UnitType Result;
};