私は、LLVM GCC コンパイラ用に完全にコンパイルするアプリケーション (3 つのプロジェクト、c++ で 2 つ、Objective-C で 1 つ) に取り組んでいます。しかし、コンパイラを「Apple LLVM コンパイラ 3.0」に切り替えると、次のような奇妙なエラーが 1 つ見つかりました。
error: implicit instantiation of undefined template 'EList<ETemplateString<char>>'
上記のエラーは、次のコード行に表示されます。
EList<EString> outlist;
次のように前方宣言された EList を使用します。
template <class T> class EList; // forward decls
EString は次のように宣言されます。
typedef ETemplateString<TCHAR> EString;
残りの使用されるテンプレートは次のように定義されます。
template <class T> class ETemplateString
{
//
//
//
}
TCHAR は次のように宣言されます。
typedef char TCHAR;
なぜGCCでうまくコンパイルできて、「Apple LLVM compiler 3.0」でエラーがスローされるのか教えてください。