Iphone C++;模板对于GCC工作正常,但在LLVM-GCC编译器中显示编译时错误 typedef char TCHAR; 模板类MyTemplateString { }; 模板类MyList { }; typedef MyTemplateString MyString; MyList高于列表;//这里显示的是编译时错误

Iphone C++;模板对于GCC工作正常,但在LLVM-GCC编译器中显示编译时错误 typedef char TCHAR; 模板类MyTemplateString { }; 模板类MyList { }; typedef MyTemplateString MyString; MyList高于列表;//这里显示的是编译时错误,iphone,c++,xcode4,llvm-gcc,Iphone,C++,Xcode4,Llvm Gcc,错误是: 未定义模板的隐式实例化MyList 仅适用于GCC编译器,但不适用于LLVM-GCC编译器。上面发布的代码在这里可以使用g++和LLVM-g++编译,没有任何错误或警告: typedef char TCHAR; template <class T> class MyTemplateString { }; template <class T> class MyList { }; typedef MyTemplateString<TCHAR>

错误是:

未定义模板的隐式实例化
MyList


仅适用于GCC编译器,但不适用于LLVM-GCC编译器。

上面发布的代码在这里可以使用g++和LLVM-g++编译,没有任何错误或警告:

typedef char TCHAR;

template <class T> class MyTemplateString
{

};
template <class T> class MyList
{

};
typedef MyTemplateString<TCHAR>         MyString;

MyList<MyString> outlist;// here it's showing compile time error
版本信息:

$ g++ -Wall -c template.cpp 

$ llvm-g++ -Wall -c template.cpp 

我猜你真正的问题在别处。

你需要在右大括号后加上分号。我很确定代码不会在任何地方编译,因为MyString根本没有定义。请展示真正的代码,而不仅仅是对你认为重要的内容的解释;请发布实际的编译代码。上述内容未在GCC中编译。@KPT:
错误:“TCHAR”未在此范围内声明
这仍然不是实际代码。编写一个示例有什么困难,请在这两种语言中都尝试,并且只在它真正在gcc中编译而不是在llvm gcc中编译时发布它?@KPT您的更新并不能让问题变得更好。现在代码可以用GCC编译,但它也可以用LLVM/GCC和LLVM/clang++编译。我使用的是XCode 4,在他们的版本中没有GCC编译器的选项,所以我在LLVM-GCC中编译,错误就来了,但是当我用GCC编译器在XCode 3中编译相同的代码时,它的编译效果非常好。是否存在任何可能导致此问题的设置问题?您可以在Xcode 4项目设置中指定编译器,但首先您可以尝试根据我上面的回答从命令行编译代码示例(请注意,上述两种情况都使用Xcode 4.0中的相关编译器)。
$ g++ -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5666.3~123/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)

$ llvm-g++ -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/llvmgcc42/llvmgcc42-2335.9~9/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --enable-llvm=/var/tmp/llvmgcc42/llvmgcc42-2335.9~9/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.9)