Listing 3
template <class T, u32 N,
class MajNListT, class MinNListT>
struct DetEvaluator
{
enum {
eMinListIdx =
NL::Length<MinNListT>::value - 1,
};
static T
Evaluate(const VectT majors[N])
{
return CofactorRecursor<
T,N,eMinListIdx, MajNListT, MinNListT
>::Evaluate(majors);
}
};
template <class T, u32 N,
s32 MajIdxN, s32 MinIdxN>
struct DetEvaluator<
T, N,
NL::Numlist<MajIdxN, NL::NullType>,
NL::Numlist<MinIdxN, NL::NullType>
>
{
static T
Evaluate(const VectT majors[N])
{ return majors[MajIdxN][MinIdxN]; }
};