Apple LLVM 3.0 中的模板和前向声明
我正在开发一个应用程序(包含 3 个项目,其中 2 个是 C++ 项目,1 个是 Objective-C 项目),它可以完美地编译 LLVM GCC 编译器。但是当我将编译器切换到“Apple LLVM编译器3.0”时,我发现了一个奇怪的错误,如下所示:
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 编译器 3.0”中抛出错误
I am working on an application(contains 3 projects, 2 in c++ and one in Objective-C) which compiles perfectly for LLVM GCC compiler. But when I switch the compiler to 'Apple LLVM compiler 3.0' I found one strange error as follow:
error: implicit instantiation of undefined template 'EList<ETemplateString<char>>'
and above error shows in the following line of code:
EList<EString> outlist;
with the forward declared EList as follows:
template <class T> class EList; // forward decls
EString is declared as follow:
typedef ETemplateString<TCHAR> EString;
and rest of the used templates are defined as:
template <class T> class ETemplateString
{
//
//
//
}
and TCHAR is declared as:
typedef char TCHAR;
can anybody please let me know why it's compiling good with GCC and throwing errors in 'Apple LLVM compiler 3.0'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅 http://clang.llvm.org/compatibility.html#undep_incomplete 。
See http://clang.llvm.org/compatibility.html#undep_incomplete .