我正在阅读boost :: MPL作者的c ++模板元编程书.我是精神/凤凰图书馆的忠实粉丝.
但是我很想知道.使用c ++元编程模板是一件麻烦事.它不是用于那种用途.模板和宏都不支持循环.在模板中,您基本上必须通过递归.
据我了解,c ++编译过程大致如下:
扩展/评估宏
实例化模板(代码生成)
然后实际的其他编译步骤(词法分析,解析,中间代码生成,机器独立优化,生成程序集/目标文件/链接......)
模板元编程是对第1步和第2步的攻击,20年前被错误地发现了.
使用实际语言不是更简单吗?我的意思是一些语言可以访问c ++语法树并操纵它,以及良好的文本处理能力.
我正在考虑像twig/django这样的模板语言,以及g ++ AST的相应钩子,以及type_traits和pod类型的原生定义.
这存在吗?我在网上找不到这样的东西.它可以实现与c ++模板元编程相同的结果(以及更多),但编译速度更快,代码更清晰,更易读.