[C++模板技术] TypeList(2)
来源:互联网 发布:ubuntu卸载搜狗输入法 编辑:程序博客网 时间:2024/05/21 05:41
基于上一篇,这里接着给出针对TypeList的系列操作。就如同求一个TypeList的长度一样,我们依旧需要利用大量的递归技术。
1、随机访问
template <typename TList,unsigned int index>struct TypeAt;template <typename Head,typename Tail>struct TypeAt<TypeList<Head,Tail>,0>{using Result = Head;};template <typename Head,typename Tail,unsigned int index>struct TypeAt<TypeList<Head, Tail>, index>{using Result = typename TypeAt<Tail, index - 1>::Result;};
2、类别索引查找
template <typename TList,typename T>struct IndexOf;template<typename T>struct IndexOf<NullType, T>{enum{value = -1;};};template<typename T, typename Tail>struct IndexOf<TypeList<T, Tail>, T>{enum{value = 0};};template <typename Head,typename Tail,typename T>struct IndexOf<TypeList<Head, Tail>, T>{private:enum{temp = IndexOf<Tail, T>::value};public:enum{value = temp == -1 ? -1 : temp + 1};};
3、附加元素
template<typename TList,typename T>struct Append;template<>struct Append<NullType, NullType>{using Result = NullType;};template<typename T>struct Append<NullType, T>{using Result = TypeList<T, NullType>;};template<typename Head,typename Tail>struct Append<NullType, TypeList<Head, Tail>>{using Result = TypeList<Head, Tail>;};template<typename Head,typename Tail,typename T>struct Append<TypeList<Head, Tail>, T>{using Result = TypeList<Head, typename Append<Tail, T>::Result>;};
4、删除特定类型
template<typename TList,typename T>struct Erase;template<typename T>struct Erase<NullType, T>{using Result = NullType;};template<typename Tail,typename T>struct Erase<TypeList<T, Tail>, T>{using Result = Tail;};template<typename Head,typename Tail,typename T>struct Erase<TypeList<Head, Tail>, T>{using Result = TypeList<Head, typename Erase<Tail, T>::Result>;};
阅读全文
0 0
- [C++模板技术] TypeList(2)
- [C++模板技术] TypeList(1)
- Loki的TypeList技术解析
- C++模板的高级用法中Typelist的用法
- TypeList
- 模板之Typelist的"增删改查"
- C++——TypeList && Repeat Macro
- 关于模板偏特化,模板递归,及Loki之Typelist和一些感悟
- 【C++】traits技术与模板元编程
- Loki系列二:Typelist的基本操作2
- Typelist 笔记
- TypeList IndexOf
- typelist 学习
- Typelist 笔记
- Typelist介绍
- 使用模板元编程操作类型集合(C++11下的TypeList)
- 扩展TypeList:Typelist生成器、MaxSizeOf
- 模板技术
- hdu6168-多校9&stl&模拟- Numbers
- 缓存失效策略(fifo lru lfu)
- 字符串逆序的几种方式
- Python包管理工具——Pip
- 2017暑假第二阶段第二场 总结
- [C++模板技术] TypeList(2)
- scrapy(三)
- Java知识(时间和日期处理)
- 机器学习 基础 数学知识之线性代数
- HIVE SQL执行计划深度解析
- u3d scene在打包时默认不保存
- HDU-6165 FFF at Valentine
- Spring Cloud入门教程(五):API服务网关(Zuul) 上
- Integer.getInteger()是逗比