Следующий код бросает две ошибки компилятора в VS 2013:Ошибка синтаксиса для идентификатора 'итератора'
- Определение функции шаблона бросает
ошибка C2061: синтаксическая ошибка: идентификатор '
iterator
' - Специализация по этой функции шаблона бросков
erro г C2912: явная специализация «
double getFillIn<double,double>(fillInOptions,double,std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const _Kty,_Ty>>>>,inputLoader *,va_list)
» не является специализация шаблона функции
Может кто-нибудь, пожалуйста, объясните почему? Я уверен, что вторая ошибка - это только следствие первого, но я не понимаю, почему он не может понять, что идентификатор iterator
.
#include <map>
template <typename T> class table {
};
template <typename S, typename T>
void f(S s, std::map<S, table<T>*>::iterator it);
Try 'имяТипа карта *> :: iterator'. –
songyuanyao
Я ошибался, но 'template class lookupTable;' перед тем, как полностью определить 'lookupTable' вас укусит. Off topic: случаи по умолчанию в коммутаторах ничего не возвращают. Хорошо для предупреждения о компиляторе и немного отвратительной отладки, если когда-либо пробирается недопустимый или новый 'opt'. –
user4581301