博客
关于我
C++通用Functor仿函数 LOKI库中的模版使用以及设计新思维
阅读量:798 次
发布时间:2023-04-04

本文共 924 字,大约阅读时间需要 3 分钟。

TypeList 是一个用于定义复合类型的工具,可以将多个类型嵌套在一起。通过使用 TYPELIST_1 到 TYPELIST_20 的宏定义,可以灵活定义不同数量的类型链表。例如,string、int、int 可以表示为 TypeList<string, TypeList<int, NullType>>。这些宏定义通过递归的方式生成复合类型,使得类型定义更加简洁和灵活。

EraseAll 是一个用于消除不需要的类型部分的工具。它通过递归处理 TypeList 的结构,删除多余的 NullType 或其他不需要的类型,返回一个简化的 TypeList。例如,EraseAll<TempList, NullType> 可以将复杂的 TypeList<int, TypeList<int, NullType>> 转换为 TypeList<int, NullType>。

TypeSelect 是一个类型萃取器,用于根据特定的条件从复合类型中提取特定的部分。它通过模板偏特化来实现,例如,根据是否是引用类型、指针类型等条件,返回相应的结果类型。这种工具在类型转换和复杂类型处理中非常有用。

TypeAt 是一个用于获取 TypeList 中指定位置的类型的工具。它通过递归的方式处理 TypeList,直到找到指定位置的类型。如果位置超出了范围或不存在对应的类型,TypeAt 会返回一个默认类型(通常是 NullType)。这种工具在处理嵌套的 TypeList 时非常有用,可以帮助开发者快速定位和获取特定位置的类型信息。

TC_Functor 是一个通用的仿函数封装类,能够封装各种函数对象、函数和成员函数的调用。它通过 TypeList 定义参数的类型,并使用 TypeSelect 和 TypeAt 获取参数的具体类型信息,然后根据这些信息进行函数调用。TC_Functor 的实现涉及多个模板类,分别处理不同数量的参数,确保函数能够正确地被调用。

总体来看,LOKI 库提供了一套强大的数据结构和工具,能够帮助开发者轻松处理复杂的类型结构,并创建通用的仿函数。理解这些工具的原理和使用方法,对于深入掌握 C++ 的元编程能力非常有帮助。

转载地址:http://xsrfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现大根堆(附完整源码)
查看>>
Objective-C实现奇偶检验码(附完整源码)
查看>>
Objective-C实现奇偶转置排序算法(附完整源码)
查看>>
Objective-C实现奇异值分解SVD(附完整源码)
查看>>
Objective-C实现奎因-麦克拉斯基算法(附完整源码)
查看>>
Objective-C实现子集总和算法(附完整源码)
查看>>
Objective-C实现字符串autocomplete using trie(使用 trie 自动完成)算法(附完整源码)
查看>>
Objective-C实现字符串boyer moore search博耶摩尔搜索算法(附完整源码)
查看>>
Objective-C实现字符串IP地址转DWORD地址(附完整源码)
查看>>
Objective-C实现字符串jaro winkler算法(附完整源码)
查看>>
Objective-C实现字符串manacher马拉车算法(附完整源码)
查看>>
Objective-C实现字符串wildcard pattern matching通配符模式匹配算法(附完整源码)
查看>>
Objective-C实现字符串word patterns单词模式算法(附完整源码)
查看>>
Objective-C实现字符串Z 函数或 Z 算法(附完整源码)
查看>>
Objective-C实现字符串加解密(附完整源码)
查看>>
Objective-C实现字符串反转(附完整源码)
查看>>
Objective-C实现字符串复制功能(附完整源码)
查看>>
Objective-C实现字符串是否回文Palindrome算法 (附完整源码)
查看>>
Objective-C实现字符串查找子串(附完整源码)
查看>>
Objective-C实现完整的ComplexNumber复数类(附完整源码)
查看>>