다음 코드는 VS 2013 개의 컴파일러 에러를 발생 용 : 구문 오류 : 식별자'iterator
'구문 오류 식별자 '반복자
- 템플릿 함수 정의
오류 C2061을 던진다
- 해당 템플릿 함수의 특수화는
erro R 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);
시도 '유형 이름지도 *> :: iterator' : 당신은 형태가 될 것입니다 그것을 알 필요가있다. –
songyuanyao
틀렸어.'lookupTable'을 완전히 정의하기 전에'template class lookupTable; '이 당신을 물들 일 것입니다. 주제 끄기 : 스위치의 기본 사례는 아무 것도 반환하지 않습니다. 올바르지 않거나 새로운'opt'가 혹시 몰래 들어가면, 컴파일러 경고와 약간의 디버깅에 좋습니다. –
user4581301