I'm having an issue compiling a template class using a newer C++ compiler (going from Visual C++ 6.0 to Visual C++ 2015). All of the errors center around a handful of typedefs within the class. Here is a snippet of the header file:
template<class Type> class Vector
{
public:
typedef Type* iterator;
typedef const Type* const_iterator;
typedef Type& reference;
typedef const Type& const_reference;
typedef size_t size_type;
Vector();
Vector( size_type Size, const_reference Object = Type() );
...
private:
VectorImpl<Type>* m_pImpl;
};
template <typename Type> Vector<Type>::Vector()
{
m_pImpl = new VectorImpl<Type>();
};
template <typename Type> Vector<Type>::Vector(Vector<Type>::size_type Size, Vector<Type>::const_reference Object)
{
m_pImpl = new VectorImpl<Type>(Size, Object);
};
...
When the compiler attempts to build the template method implementation it throws an error when encountering the typedef parameter (i.e. 'Vector::size_type Size') I get an 'C2988 unrecognizable template declaration/definition' error. In other instances I get an 'C2061 syntax error: identifier 'size_type'' error.
Is there a formatting issue or could there be a compatibility issue with using typedefs in a template class?