[英]Erasing type from a typelist c++ metaprogramming
在c ++元編程中, 從類型列表中擦除類型是什么意思。 誰能提出任何簡單的例子。
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型。
從Loki的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
的類型列表。
如果您只是不了解什么是類型列表,那么也許您應該將其作為一個單獨的問題發布,或者也可以在此處詢問...。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.