- 论坛徽章:
- 0
|
续上....
6)移除某个类型的所有出现
/********************************************************************
移除typelist中某个类型的所有出现
*********************************************************************/
template<class TList, class T>
struct EraseAll
{
typedef Typelist<typename TList::Head, typename EraseAll<typename TList::Tail, T>::Result> Result;
};
// 继续在tail中删除类型T
template <class T, class Tail>
struct EraseAll<Typelist<T, Tail>, T>
{
typedef typename EraseAll<Tail, T>::Result Result;
};
template <class T>
struct EraseAll<NullType, T>
{
typedef NullType Result;
};
基本思想和erase类似,不同的是删除了需要删除的类型时不是直接返回而是继续查找下去 |
|