2011-02-28 3 views

답변

3
template <class T> T* 
at(typename std::list<T*>::size_type pos); 
// ^^^^^^^^ 

this question도 참조하십시오.

template <class T> 
T* at(typename std::list<T*>::size_type pos); 

그렇지 않으면, 컴파일러는 말하자면 size_type이 될 수있는 것을 모르는 :

1

typename 알라를 추가합니다.

+0

짐작할 수 있겠지만, 게으르다. ( –

+0

@Matthieu : 오류 메시지에서 제안 하시겠습니까? 그렇습니다. 아직도 역사적으로 많은 컴파일러가 추측하고 오류가 없지만 표준에 따르지 않기로 선택했습니다. 그 전례 및 컴파일러 표준 준수가 강화되었습니다. 나는 컴파일러가 템플릿을 파싱하고 특정 인스턴스화 전에 단순 게으름이 아닌 약간 더 나은 검사를 허용하면서 실제적인 문제가 있다는 인상을 심어주었습니다. 실제 예제를 기억해 두십시오 - 예전의 comp.lang.C++을 통해 발굴해야 할 수도 있습니다 .... –

+0

경고는 다음과 같습니다. 표준을 준수하며 여전히 올바른 작업을 수행 할 수 있습니다. 로켓 과학이 아닙니다. 많은 컴파일러가 과거에 컴파일 할 수 있다는 점을 감안할 때. – MSalters

관련 문제