2013-02-08 2 views
0

의 의미 C++ 메타 프로그래밍에서 입력리스트의 지우기 유형. 어느 누구도 간단한 예를 제시 할 수 있습니까?유형리스트에서 지우기 유형 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를 제거해야하는 경우입니다. 그것을 제거 할 수 있습니까? 그리고 난 로키의 Typelist.h에서 형 B.

+0

[링크] (http://books.google .... 별도의 질문이나 그뿐만 아니라 여기에 물어 게시해야 .co.in은/서? ID = aJ1av7UFBPwC 및 PG = PA58 및 LPG = PA58 및 DQ = 삭제 + 형 +에서 + A + typelist 및 소스 = BL 및 OTS = YRgDZnTf51 및 SIG = L_n6EQJeIfQvGhuaZdeNr3_JH1g 및 HL = EN 및 SA = X 및 EI = xZwUUdasAoWKrgfJlYDgCA 및 VED = 0CDUQ6AEwAQ #의 V = onepage 및 Q = 소거 % 20type % 20from % 20A % 20typelist & f = false) –

답변

1

을 제거하는 방법 : 언급 TList typelist가 int, doublechar을 말한다면

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 

그래서, - Erase<TList, double>::Resultintchar에 대한 typelist을 반환 . 당신은 단지 typelist가 무엇인지 이해하지 못하는 경우

, 아마도 당신은