STLのコンパイルエラーを解読する

STLは便利ですが、煩雑なエラーメッセージに悩まされる事が多いのも事実です。

そんなときにはSTLFiltをお勧めします。

STLFiltは、STLのエラーメッセージを短くします。対応するコンパイラは10種類以上です。


仕組みとしては標準出力のテキストを置換していく事により、読みやすくするものです。Visual C++の例でみてみましょう。

まずはフィルタ適用前のエラーを見てください。フィルタ適用後は青字の部分が変化します。

> cl -GX filttest.cpp

filttest.cpp(28) : コンパイルされたクラスのテンプレートのインスタンス化 ‘void G
etFirstValue<char>(std::vector<_Ty> &)’ の参照を確認してください
       
with
        [
            _Ty=char
        ]


次に適用後です。赤字の部分はSTLFiltのための設定です。

> cl -GX -WL filttest.cpp | perl stlfilt.pl

filttest.cpp(28) : コンパイルされたクラスのテンプレートのインスタンス化 ‘void GetFirstV
alue<char>(vector<
char> &)’ の参照を確認してください

このように、STLFiltの役目は_Tyを代入しただけです。

今回は敢えて分かりやすい例を出しましたが、複雑なものだとwithが数個続いたりしますし、ログが流れるだけで不愉快というものです。

興味の有る方は試してみてはいかがでしょうか?

Leave a Reply

最初のコメントを頂けますか?

更新通知を受け取る »
avatar
wpDiscuz