Вы, вероятно, не используете компилятор C ++ 11, и эта строка недопустима:
std::map<int,template<class T>> map_;
Это должно быть
std::map<int,template<class T> > map_;
Обратите внимание на пробел между > >
,Pre-C ++ 11, >>
всегда обрабатывается как оператор сдвига битов.
Кроме того, что должен делать код?Если я не ошибаюсь, вы должны объявить вашу карту как
std::map<int,message> map_;
Теперь, std::map<int,template<class T>> map_;
на самом деле не имеет смысла, если только это не член другого класса шаблона, в этом случае вам нужно
std::map<int,T> map_;