//мультииндексный массив
m_ctachers_storage
//тег
struct CATCHER_ID{} - тег
//итератор
typedef typename midx_catchers::template index<CATCHER_ID>::type::const_iterator citr_CATCHER_ID;
//метод класса
template<class Archive>
void save(Archive & ar, const unsigned int version) const
{
//expected primary-expression before '>' token
citr_CATCHER_ID itC = m_ctachers_storage.get<CATCHER_ID>().begin();
}
Здравствуйте, nen777w, Вы писали:
N>[...skip...]
N>//метод класса
N>template<class Archive>
N>void save(Archive & ar, const unsigned int version) const
N>{
N> //expected primary-expression before '>' token
N> citr_CATCHER_ID itC = m_ctachers_storage.get<CATCHER_ID>().begin();
N>}
N>
Не могу воспроизвести один-в-один, но всё же.
Квалификатор добавить попробуйте:
citr_CATCHER_ID itC = m_ctachers_storage.template get<CATCHER_ID>().begin();
Хотя я бы понял, почему компилятор возмущается, если бы вызывался метод ar, но почему он ругается на поле класса —

.
Разве что его тип тоже шаблоном задан.
Здравствуйте, nen777w, Вы писали:
N>N>//метод класса
N>template<class Archive>
N>void save(Archive & ar, const unsigned int version) const
N>{
N> //expected primary-expression before '>' token
N> citr_CATCHER_ID itC = m_ctachers_storage.template get<CATCHER_ID>().begin();
////////
N>}
N>
Ну очевидно же: если угловые скобки воспринимаются как два оператора больше-меньше, — значит, компилятору нужно подсказать, что это имя — шаблон. Так же, как это сделано было выше, в typedef.