簡體   English   中英

從類型列表中清除類型C ++元編程

[英]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提到說intdoublechar - Erase<TList, double>::Result將返回僅用於intchar的類型列表。

如果您只是不了解什么是類型列表,那么也許您應該將其作為一個單獨的問題發布,或者也可以在此處詢問...。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM