問題は次のとおりです。次のテストでは、大量のコンパイラ エラーがスローされます。
#include <vector>
using namespace std;
template<class T>
class test{
vector<T> vec;
public:
vector<T>::iterator begin();
};
template<class T>
vector<T>::iterator test<T>::begin(){
return vec.begin();
}
int main(){
test<float> testing;
testing.begin();
}
いくつかのコンパイラ エラー:
test.cpp(8): warning C4346: 'std::vector<T>::iterator' : dependent name is not a type
test.cpp(8): error C2146: syntax error : missing ';' before identifier 'begin'
test.cpp(13): error C2143: syntax error : missing ';' before 'test<T>::begin'
vector<T>
ただし、たとえばテンプレート化されたものを交換すると、vector<float>
問題なくコンパイルされます。例えば:
template<class T>
class test{
vector<T> vec;
public:
vector<float>::iterator begin();
};
template<class T>
vector<float>::iterator test<T>::begin(){
return vec.begin();
}
理由についてのアイデアはありますか?