テンプレートに関して C++ のエラー メッセージがかなりひどいという人々の言いたいことを、私は本当に理解し始めています。プロトタイプと一致しない関数などの単純なものに対して、非常に長いエラーが発生するのを見てきました。
これらのエラーを解読するためのトリックはありますか?
編集: gcc と MSVC の両方を使用しています。どちらもかなりひどいようです。
テンプレートに関して C++ のエラー メッセージがかなりひどいという人々の言いたいことを、私は本当に理解し始めています。プロトタイプと一致しない関数などの単純なものに対して、非常に長いエラーが発生するのを見てきました。
これらのエラーを解読するためのトリックはありますか?
編集: gcc と MSVC の両方を使用しています。どちらもかなりひどいようです。
次のツールを試して、物事をより健全にすることができます。
私は地獄ができないので確かです。小さなエラーは、ページや読み取り不可能なジャンクのページに爆発します。通常、早朝、コーヒーの前。:(
私の唯一のアドバイスは、深呼吸をして、一番上から始めて、重要な情報を解析してみることです。(私は知っています、言うのは簡単ですよね?)
@ nsandersが言ったように、 STLFiltは良い解決策です。自作の STLFilt (Perl をインストールする手間をかけたくない場合) は、エディターでエラー メッセージをコピーし、(より) 管理しやすくなるまでエラーの一部を置き換えます。
例えば
s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g
マニアックではない用語で言えば、これは次のことを意味します。
交換:
std::basic_string<char,std::char_traits<char>,std::allocator<char>>
と:
string
一部のコンパイラは、他のコンパイラよりも優れたメッセージを提供します。どのコンパイラを使用していますか? そうは言っても、彼らはすべてかなり悪いです。C++0X はこの問題のほとんどを修正しますが (概念を参照)、標準は 2009 年までリリースされず、広範なサポートはおそらくそれよりも遅くなるでしょう :-(
少なくともVisualStudioでは、エラーリストではなく[出力ビルド]ウィンドウに表示される情報が多くなります。エラーリストの状態で「Foo<int>をFoo<int>に変換できません」というテンプレートエラーが発生しました。出力ウィンドウの実際のエラーの後に、実際の問題が何であるかを理解するのに役立つ行がいくつかありました。