std :: map и -fno-implicit-templates - PullRequest
       5

std :: map и -fno-implicit-templates

5 голосов
/ 09 августа 2010

Я пытаюсь скомпилировать с 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. Почему?

Заранее спасибо, любые советы будут оценены.

1 Ответ

7 голосов
/ 09 августа 2010

Карты используют красно-чёрные деревья в своей реализации, поэтому вам нужно явно указать тип дерева, необходимый для создания экземпляра карты. Это не похоже на особенно полезный флаг компилятора, ИМХО.

...