5
我想用g ++ 4.4编译并链接使用STL的简单程序。 我正在尝试使用-fno-implicit-templates,因此所有模板都必须显式实例化。std :: map和-fno-implicit-templates
我不明白为什么这代码工作:
#include <map>
//template class std::map<char,char>;
template class std::_Rb_tree<char, std::pair <char const, char>,
std::_Select1st<std::pair<char const, char> >,
std::less<char>, std::allocator<std::pair<char const, char> > >;
int main() {
std::map <char,char> table;
return 0;
}
我希望,这个程序需要行:template class std::map<char,char>;
,但该行不会使该程序的链接。需要std::_Rb_tree line
。为什么?
在此先感谢,任何提示将不胜感激。
我同意尼尔:这个标志的问题是,你需要明确地实例化类的每个组件,这暴露你实现的每一个细节... URK。你很幸运,开始使用STL非常简单,用一个强大的库文件来尝试它,在你编译成功之前,你将会哭泣你所有的眼泪。 – 2010-08-09 13:24:38
+1一个更诚实的国旗名称将会是 - 你已经选择了痛苦的方式 – 2010-08-09 16:18:56
@chrispy:如果编译器在Christopher Lee的声音中读出它会更好。 – Peter 2010-08-11 02:44:43