模板元编程(Template Metaprogramming)更准确的含义应该是“编‘可以编程序的’程序”,而模板元程序(Template Metaprogram)则是“‘可以编程序的’程序”。也就是说,我们给出代码的产生规则,编译器在编译期解释这些规则并生成新代码来实现我们预期的功能。
模板元编程由于把运算由执行时提前到了编译时,所以其一个特点是运行时很快,效率很高!不过这是以编译耗时为代价的。这个作用主要体现在复杂的数值运算时。另外一个特点是能解决普通的C++程序无法解决的问题,这时才是模板元编程大显身手的时候。这个作用体现在类型识别和处理时。
因为模板参数都要是编译时常量,而我们的运算需求大部分时候应该都是对变量的运算,所以我认为模板元编程解决数值运算问题可能意义不大,可能主要是用来封装在泛型库底层来完成复杂的类型处理功能。
还有我觉得最大的问题是,模板元编程就如同正则表达式等一些技术一样,作用很强大,但是用到的地方似乎很少,以至于学习和练习都找不到施展空间~O(∩_∩)O~