ちょっと前に書いてたうまくいかないコードですが,問題の箇所にtypenameをつけると動きました.
#include <vector> #include <iostream> using namespace std; template <class T> void test(const vector<T>& vec){ for(typename vector<T>::const_iterator it=vec.begin();it!=vec.end();it++) cout << *it << endl; } int main(){ vector<int> vec; vec.push_back(100); vec.push_back(100); test<int>(vec); }
関数テンプレート中で宣言している vector<T>::const_iteratorの前にtypename.
こんな書き方知らんかった!typenameはその後ろに続くものが型名であるということを明示的に示すらしい.