获取编译期间使用的最大模板实例化深度

时间:2013-09-15 12:04:54

标签: c++ c++11 g++4.8

正如标题所说,是否有编译器日志记录设置,它提供编译期间编译器达到的最大瞬时deph?

如果编译超出了max template deph(在C ++ 11模式下哪个GCC的默认值为900),则编译失败。但我需要的是获得编译器在成功编译期间达到的最大模板即时深度。

1 个答案:

答案 0 :(得分:7)

g++确实有这样的选项,但是默认情况下它并没有在kubuntu上启用。

以下是来自gcc/cp/tree.c的{​​{1}}的一部分(因此根据GPL许可):

gcc-4.8.1

您可以在向命令行添加void cxx_print_statistics (void) { print_search_statistics (); print_class_statistics (); print_template_statistics (); if (GATHER_STATISTICS) fprintf (stderr, "maximum template instantiation depth reached: %d\n", depth_reached); } 时获取这些统计信息但是在编译-fdump-statistics -fstats时必须启用 GATHER_STATISTICS,所以你可能需要重建gcc才能获得您正在寻找的功能。