8

タイトルが示すように、コンパイル中にコンパイラが到達した最大インスタンス deph を提供するコンパイラ ログ設定はありますか?

コンパイルが最大テンプレート deph (GCC のデフォルト値は C++11 モードで 900) を超えた場合、コンパイルは失敗します。しかし、必要なのは、コンパイルが成功したときにコンパイラが到達したテンプレートのインスタンス化の最大深度を取得することです。

4

1 に答える 1

7

g++にはそのようなオプションがありますが、たとえば kubuntu ではデフォルトで有効になっていません。

以下はgcc/cp/tree.cfromの一部ですgcc-4.8.1(したがって、GPL の下でライセンスされています)。

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はおそらく再構築する必要があります.gcc

于 2013-09-15T14:59:57.357 に答える