栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++-模板元编程TypeList进阶操作Accumulate

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++-模板元编程TypeList进阶操作Accumulate

前置课程
c++模板元编程TypeList定义及基本操作

#include "def.h"

template typename metaFunc, typename Init, bool = IsEmpty_v>
struct Accumulate_;

template typename metaFunc, typename Init>
struct Accumulate_ {
    using type = Init;
};

template typename metaFunc, typename Init>
struct Accumulate_
        : public Accumulate_<
        PopFront_t,
        metaFunc,
        typename metaFunc>::type> {};

template typename metaFunc, typename Init>
using Accumulate_t = typename Accumulate_::type;

// 实践一
// 实现逆序 reverse
template>
struct Reverse_Acc_ {
    using type = Accumulate_t;
};

template>
using  Reverse_Acc_t = typename Reverse_Acc_::type;

// 实践二 最大的类型
// 辅助类
template
struct Identity {
    using type = T;
};

template
struct BiggerType_ {
    // Identity减少分支实例
    using type = typename conditional_t=sizeof(Current), Identity, Identity>::type;
};

template
using BiggerType_t = typename BiggerType_::type;

template
struct BiggestType_{
    using type = Accumulate_t;
};

template
using BiggestType_t = typename BiggestType_::type;

struct Big {
    char buffer[1024];
};


int main() {
    // 逆序测试
    using SL = TypeList;
    using Reverse_SL = Reverse_Acc_t;
    cout << boost::typeindex::type_id_with_cvr().pretty_name()<< endl;

    // 最大类型测试
    using Biggest_SL = BiggestType_t;
    cout << boost::typeindex::type_id_with_cvr().pretty_name()<< endl;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号