g++ 4.4 でコンパイルし、STL を使用する単純なプログラムをリンクしようとしています。-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
が必要です。なんで?
事前に感謝します。ヒントをいただければ幸いです。