4

STL C++0x コンテナー (ツールチェーンは GCC 4.7.0) を使用していくつかの C++ パーサーをデバッグしています。

また、STL 再バインド コードはほとんど理解できないため、何らかの形で typedef のようなインスタンス化の完全なチェーンを出力する必要がありますstd::vector<T>::reference。もちろん、それは単に に解決されますが、少なくとも 7 つの異なるテンプレートをおよび他の内部T&で通過する前に.__gnu_cxx

したがって、テンプレートエラーの場合に出力されるもののようなものを期待していますが、コンパイラによってインスタンス化されるすべてのクラスについてです。出来ますか?GCCプラグイン、多分...

UPD:まあ、必要なすべてのテンプレートを手動でインスタンス化しました。GCC コード自体にいくつかの debug printf ステートメントを挿入することを除いて、これを自動的に行う良い方法はないようです。

4

1 に答える 1

0

GCC 4.7 を使用しているため、コードに対して clang を実行できるシステムを使用していると想定しています。特にテンプレートに関する Clang のエラー メッセージは非常に優れています。

    テンプレート
    クラスの例 {
        例(const T& t) : t_(t) {}
        T&t_;
    };

    int a;
    例 e(a);

出力:

    t.cpp:8:14: エラー: クラス 'Example' のプライベート コンストラクターを呼び出しています
    例 e(a);
                 ^
    t.cpp:3:5: 注: ここで暗黙的に宣言された非公開
        例(const T& t) : t_(t) {}
        ^
    t.cpp:3:27: エラー: タイプ 'int' への参照のタイプ 'const int' の値へのバインディングがドロップされます
          修飾子
        例(const T& t) : t_(t) {}
                              ^ ~
    t.cpp:8:14: 注: メンバー関数のインスタンス化で 'Example::Example' がここで要求されました
    例 e(a);
                 ^
    2 つのエラーが発生しました。

于 2012-05-20T22:22:03.637 に答える