This Source: template <typename Key,typename Value> 27 class mutant_iter 28 { 29 private: 30 std::vector<Value> *Vector; 31 std::multimap<Key,int> *Mmap; 32 std::multimap<Key,int>::iterator iter; 33 }; try to compile: g++ src.cpp -pedantic -Wall -o bin GCC print: mutant.cpp:32: error: expected ‘;’ before ‘iter’ Other compilers( Borland C++ Bilder 6.0 for example) compile this sorce correctly. Modify this source: 27 class mutant_iter 28 { 29 private: 30 std::vector<Value> *Vector; 31 std::multimap<Key,int> *Mmap; 32 std::multimap<Key,int>::iterator; //without iterator name! 33 }; compiled correctly, witout errors or warnings.
std::multimap<Key,int>::iterator iter; You forgot the typename keyword as std::multimap<Key,int> is dependent. So your source should look like: template <typename Key,typename Value> class mutant_iter { private: std::vector<Value> *Vector; std::multimap<Key,int> *Mmap; typename std::multimap<Key,int>::iterator iter; };
It's true. Tanks.