2009-02-27 4 views
-2

중복. this을 참조하십시오.GCC에서 템플릿 기능

누군가 GCC에서 컴파일되지 않는 이유를 말해 줄 수 있습니까? MSVC6 및 VS2008 모두 경고없이 컴파일합니다.

코드 ...

#include <iostream> 
#include <vector> 
#include <ctime> 
#include <cstdlib> 
using namespace std; 
template <typename T> 
T range(vector<T> &v) 
{ 
    vector<T>::iterator i = v.begin(); 

은 마지막 줄에 오류가 예상을 예외; 전에.

typedef가 필요합니까?

내가하는 컴파일 작업의 대부분은 MSVC6 또는 VS2008입니다. 나는 GCC로 많은 것을하지 않으므로 어둠 속에서 조금 있습니다.

+1

정말이 질문을 원하지 않습니다. 예, 중복 질문 및 답변이 게시되었지만 본인의 신체에 gcc에 대한 참조가 있습니다. 다른 질문은 그렇지 않습니다. SO가 속임수 질문을 연결할 때까지 이것은 중요한 요소입니다. – LarryF

답변

3

컴파일러는 vector :: iterator를 해당 유형의 유형으로 구문 분석 할만큼 충분하지 않습니다. typename 키워드를 사용하여 힌트를 표시하십시오.

typename vector<T>::iterator i = v.begin();