在元编程中,从打字员中擦除类型的意义是什么?谁能给出一个简单的例子。
class null_typelist {};
template <class H, class T>
struct typelist
{
typedef H head;
typedef T tail;
};
template<class T1, class T2=null_typelist, class T3=null_typelist, class T4=null_typelist> struct List;
template <class T1, class T2, class T3>
struct List<T1, T2, T3, null_typelist>
{
typedef typelist<T1, typelist<T2, typelist<T3,null_typelist> > > type;
};
template <class H, class T>
class ABC< typelist<H, T> > : public ABC<T>
{
...
};
template <class H>
class ABC< typelist<H, null_typelist> >
{
...
};
struct Elements{};
struct A: Elements{};
struct B: Elements{};
struct C: Elements{};
typedef List<A,B,C>::type MyOBJ;
struct Createobject : ABC<MyOBJ>
{
...
};
int main()
{
Createobject obj;
}在这种情况下,如果我必须从类型列表中删除B。有可能移除它吗?以及我如何删除B型。
发布于 2013-02-08 06:37:23
Loki's Typelist.h:
00233 // class template Erase
00234 // Erases the first occurence, if any, of a type in a typelist
00235 // Invocation (TList is a typelist and T is a type):
00236 // Erase<TList, T>::Result
00237 // returns a typelist that is TList without the first occurence of T因此,如果打字员TList提到int、double和char - Erase<TList, double>::Result只会返回int和char的打字员。
如果你只是不明白打字员是什么,那么也许你应该把它作为一个单独的问题发出来,或者在这里也这样问.
https://stackoverflow.com/questions/14767009
复制相似问题