博客
关于我
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/

你可能感兴趣的文章
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>
MySQL主从复制的原理和实践操作
查看>>
webpack loader配置全流程详解
查看>>
mysql主从复制,读写分离,半同步复制实现
查看>>
MySQL主从失败 错误Got fatal error 1236解决方法
查看>>
MySQL主从架构与读写分离实战
查看>>
MySQL主从篇:死磕主从复制中数据同步原理与优化
查看>>
mysql主从配置
查看>>
MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
查看>>
MySQL之CRUD
查看>>
MySQL之DML
查看>>
Mysql之IN 和 Exists 用法
查看>>
MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
查看>>
MySQL之SQL语句优化步骤
查看>>
MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
查看>>
Mysql之主从复制
查看>>