对程序的编译时属性进行基准测试

Ori*_*ent 12 c++ gcc templates clang constexpr

评估编译程序所需的精确最小值-fconstexpr-steps=-ftemplate-depth=参数的最佳方法是什么?

我目前所做的是对价值的二分法.但是对于真实世界模板加载的程序,它变得非常长,甚至在值的上限上是对数的.

-v选项-ftime-report,但是即使它们的输出也没有给出关于实际使用的最大模板深度和在评估常量表达式时实际传递的步骤数的任何所需信息.

Tem*_*Rex 3

您可以看看Boost.Hana如何进行基准测试。它的基准代码主要以eRuby 模板的形式编写。这些模板用于生成 C++ 文件,然后在收集编译和执行统计信息时对其进行编译。

-ftemplate-depth对分来找到和的必要值-fconstexpr-steps当然手动起来有点麻烦,但您也可以编写一个脚本(Ruby、Python,无论您喜欢什么)来自动执行此操作。只需在一个简单的循环中将初始值加倍,while直到程序编译成功。