Listing 9
template<unsigned short Dim, unsigned short Order, class NList,
unsigned short N=1, unsigned short Sum=0>
struct ShapeFunction3;
template<unsigned short Dim, unsigned short Order,
unsigned short N, unsigned short Sum>
truct ShapeFunction3<Dim,Order,NL::NullType,N,Sum>
{
enum { denom = Factorial<Order-Sum>::value };
typedef typename BasicList3<Dim,Order,Order-Sum>
::Result Result;
};
template<unsigned short Dim, unsigned short Order,
int Num, class Tail, unsigned short N, unsigned short Sum>
struct ShapeFunction3<Dim,Order,Numlist<Num,Tail>,N,Sum>
{
private:
typedef ShapeFunction3<Dim,Order,Tail,N+1,Sum+Num> temp;
public:
enum { denom = Factorial<Num>::value * temp::denom };
typedef typename TL::Append<
typename ShapeBasis<Dim,Order,N,Num>::Result,
typename temp::Result>::Result Result;
};