stl에서 iterator 관련 에러입니다..

e1118의 이미지

#include <map>

using namespace std;

template <class T>
class Test
{
public:
    map< int , T * > a;
    map< int , T * >::iterator i;
};


class Data
{
public:
    int a;
};

int main()
{
    Test<Data> a;
}

$ g++ z.cpp -o z
z.cpp:10: error: expected `;' before "i"

예전에 gcc 2.95에서는 이상없이 컴파일이 되었는데 3.4.2 에서는 에러가 출력됩니다. 왜 이런 문제가 발생하는지 알려주시면 감사하겠습니다.
iterator 관련 에러인거 같은데..
참고로 gcc 버젼은 다음과 같습니다.

Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux
Thread model: posix
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)

페도라 3이구요..

lyster의 이미지

typename map< int , T * >::iterator i;

iterator가 타입명인지 맴버변수인지 알 수 없어서 나는 오류입니다.

게으름은 이제 그만

e1118의 이미지

앗 정말 감사합니다.
이제 에러 안나네요.. 정말 감사드립니다. ㅜㅜ

메롱~

kihongss의 이미지

참고로 typename의 3가지 용법

http://bbs.kldp.org/viewtopic.php?t=43061