首先引入两个概念 模板元编程和元函数。
模板元编程:利用模板技术,在编译阶段完成类型推断、数值计算等操作的一种编程方法。
模板元编程技术主要包括:
- 类型萃取:利用模板和模板特化获取想要类型的信息的一种技术。
- 编译时计算:使用 constexpr关键字修饰的变量,会强制在编译时得到结果。
- SFINAE(记住怎么用就可以了):比如后面的 enable_if,就是最典型的。根据条件的不同,控制函数的可见性,影响函数能否被正确地编译和调用。
- 递归展开:比如 参数包的递归展开,或者 获取tuple第i个类型,也需要使用到递归展开。
元函数:元函数是模板元编程的一个重要的概念。元函数并不是传统意义山的函数,本质上上利用模板、模板特化进行类型推断和操作的一种机制。用于在编译时进行类型检查、类型推断等。