GCC что ему тут не нравится?
От: nen777w  
Дата: 12.09.10 09:22
Оценка:
//мультииндексный массив
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();
}
Re: GCC что ему тут не нравится?
От: Alexey F  
Дата: 12.09.10 10:12
Оценка: 4 (1)
Здравствуйте, 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, но почему он ругается на поле класса — .
Разве что его тип тоже шаблоном задан.
Re: GCC что ему тут не нравится?
От: Кодт Россия  
Дата: 12.09.10 10:16
Оценка: 4 (1)
Здравствуйте, 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.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.