2008-09-07 10 views
25

C++のエラーメッセージがテンプレートに関してかなりひどいと言うと、人が何を意味するのかが本当に理解し始めています。私は、プロトタイプと一致しない関数のような単純なものに関して、恐ろしいほど長いエラーを見てきました。C++テンプレートのエラーメッセージを解読する

これらのエラーを解読する手口はありますか?

EDIT:gccとMSVCの両方を使用しています。彼らはどちらもかなり恐ろしいようです。

答えて

3

いくつかのコンパイラは、他のものより優れたメッセージを与えます。どのコンパイラを使用していますか?それを言って、彼らはすべてかなり悪いです。 C++ 0Xはこの問題の大半を解決しますが(concepts参照)、2009年までは標準は公開されませんし、幅広いサポートはおそらくそれより遅いでしょう:-(

+1

は-1彼らはまだ解読不能です。前と同じように解読できないかもしれないが、まだ恐ろしい! –

+0

ええ、私は今、苦労しています。彼らは視覚的に解析するのはとても難しいです! –

+2

概念はそれをC++ 11にしませんでした。 –

8

私は確かに地獄ではありません小さなエラーは、読めないジャンクのページやページに爆発します。朝早く、コーヒーの前に:(

私の唯一のアドバイスは、一番上から始めて、重要な情報を解析してみることです

2

少なくともVisual Studioでは、エラーリストではなく出力ビルドウィンドウに詳細が表示されています。エラーでテンプレートエラーが発生しました。リスト状態、「Can not conv ert Foo <int> to Foo <int> "。実際のエラーの後に出力ウィンドウにいくつかの行があり、実際の問題の解読に役立ちました。

4

As nsanders前記STLFiltは良好な解決策である。自作のSTLFilt(Perlをインストールする手間を掛けたくないとき)は、エラーメッセージをエディタにコピーし、エラーの一部を(より)管理しやすくなるまで置き換えます。

置き換え

std::basic_string<char,std::char_traits<char>,std::allocator<char>> 

で:

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 

は少ないオタク用語では、これは意味

string 
+0

これは聞こえるよりも便利です。人間の脳の情報過負荷の限界については恥ずかしいと感じないでください我々は一度に同じ数のパターンにすべてマッチすることができます - トリックは徐々に大きなパターンと一致するように学ぶことです。 – breakpoint

関連する問題