Такая вот программка:
template<typename TypeListT>
struct Min;
template<typename T, typename U>
struct Min<TypeList<T,U> >
{
private:
static const unsigned int tmp=Max<U>::ret;
public:
static const unsigned int ret=sizeof(T)<tmp?sizeof(T):tmp;
};
template<typename T>
struct Min<TypeList<T,NullType> >
{
static const unsigned int ret=sizeof(T);
};
проблема такая
вот это:
TL::Min<TL::MakeTypeList<char,int,char[300],int,char,int[10]>::ret>::ret
выдаёт нормальное значение, т.б. 1
а если добавит в начало один int, так:
TL::Min<TL::MakeTypeList<int,char,int,char[300],int,char,int[10]>::ret>::ret
то почему-то получается 4.
Что не так?