1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#ifndef INCLUDED_UNIQ_H_
#define INCLUDED_UNIQ_H_
#include "typelist.h"
#include "append.h"
#include "remove.h"
template <typename ...Params>
struct Uniq;
template <>
struct Uniq<TypeList<>>
{
typedef TypeList<> List;
};
template <typename Head, typename ...Tail>
struct Uniq<TypeList<Head, Tail...>>
{
typedef typename Remove<Head, TypeList<Tail...>>::List RmList;
typedef typename Uniq<RmList>::List UTail;
typedef typename Prefix<Head, UTail>::TList List;
};
#endif
|