2017-04-18 10 views
0
typedef vector<string>    tdv_Str; 
typedef map<string, tdv_Str, CaseI> tdm_StrList; // var name, possible values 
typedef map<short, tdm_StrList>  tdm_VarList; // type, var list 

* CaseIは、大文字と小文字を区別しない文字列マップソートです。地図上のマップ内のベクトル

tdm_VarListのキー(list)は、既存またはされていない場合、私は確認してください。

if (list.count(key) == 0) 
// ... 

は、それをコンパイルし、私は次のエラーを得た:

1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xtree(1089): error C2220: warning treated as error - no 'object' file generated 
1>   c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\map(81) : see reference to class template instantiation 'std::_Tree<_Traits>' being compiled 
1>   with 
1>   [ 
1>    _Traits=std::_Tmap_traits<short,tdm_StrList,std::less<short>,std::allocator<std::pair<const short,tdm_StrList>>,false> 
1>   ] 
1>   Src\APS.cpp(683) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled 
1>   with 
1>   [ 
1>    _Kty=short, 
1>    _Ty=tdm_StrList 
1>   ] 
1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xtree(1089): warning C4503: 'std::_Tree<_Traits>::_Insert' : decorated name length exceeded, name was truncated 
1>   with 
1>   [ 
1>    _Traits=std::_Tmap_traits<short,tdm_StrList,std::less<short>,std::allocator<std::pair<const short,tdm_StrList>>,false> 
1>   ] 

答えて

6

あなたは警告を上昇(」装飾された名前の長さを超えました ")をエラーに変換します。 つまり、定義する複合タイプの内部名が4096文字より長くなりました。 対応するMS documentation for the warning messageは、問題をより詳細に説明し、作業嫌いを示唆しています。

+0

非常にテンプレート化された標準ライブラリ – vu1p3n0x

+0

@ vu1p3n0xの残念なことに、これはMicrosoft製品を使用したことによる残念な結果です。 C++を書くための優れた製品があります。 clangコンパイラは、Microsoftの努力よりはるかに優れています。 CLion IDEは優れています。 –

関連する問題