When I trying to use vector iterator to template specialized class, in the template, I get an error C2146 in MSVS2012. Is it a compiler issue or something wrong with my code?
template <typename T>
struct A { };
typedef A< int > Ai;
std::vector< Ai >::iterator; // ok
std::vector< A<int> >::iterator; // ok
struct B {
std::vector< Ai >::iterator it1; // ok
std::vector< A<int> >::iterator it2; // ok
};
template <typename T>
struct C {
std::vector< Ai >::iterator it1; // ok
std::vector< A<int> >::iterator it2; // ok
std::vector< A<T> >::iterator it3; // fail
};