コンパイラの警告 (レベル 1) C4788

'識別子' : 識別子は '数値' 文字に切り詰められました

コンパイラによって、関数名に使用できる最大文字数が制限されます。 コンパイラが EH/Standard Edition H コードの関数レットを生成すると、関数名の前に "__catch"、"__unwind"、または別の文字列などのテキストが付いて、関数名が形成されます。

作成された funclet 名が長すぎる場合、コンパイラはこれを切り捨てて C4788 を生成します。

この警告を解決するには、元の関数名を短くします。 関数が C++ 関数テンプレートまたはメソッドの場合は、名前の一部に typedef を使用します。 次に例を示します。

C1<x, y, z<T>>::C2<a,b,c>::f

これは次のように置換されます。

typedef C1<x, y, z<T>>::C2<a,b,c> new_class ;
new_class::f

この警告は x64 コンパイラでのみ出力されます。