首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从打字员c++元编程中删除类型

从打字员c++元编程中删除类型
EN

Stack Overflow用户
提问于 2013-02-08 06:33:35
回答 1查看 367关注 0票数 0

元编程中,从打字员中擦除类型的意义是什么?谁能给出一个简单的例子。

代码语言:javascript
复制
    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型。

EN

回答 1

Stack Overflow用户

发布于 2013-02-08 06:37:23

Loki's Typelist.h:

代码语言:javascript
复制
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的打字员。

如果你只是不明白打字员是什么,那么也许你应该把它作为一个单独的问题发出来,或者在这里也这样问.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14767009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档