Мой компилятор недоволен тем, как я реализую свои методы шаблона. Это дает тонн сообщений об ошибках, таких как "неопределенный тип T" для этих реализаций.
Это мой первый метод, он реализован вне блока класса:
class VectorConvertor
{
public:
// ...
template <class T>
static void ReverseVectorElements(std::vector<T> & Vector);
// ...
};
template <class T>
void VectorConvertor::ReverseVectorElements(std::vector<T> & Vector)
{
std::vector<T>::size_type size = Vector.size();
T swap;
for (std::vector<T>::size_type i=0; i<size/2; i++)
{
swap = Vector.at(i);
Vector.at(i) = Vector.at(size-1-i);
Vector.at(size-1-i) = swap;
}
}
Еще один такой; на этот раз метод реализован внутри класса:
class ElementaryMath
{
public:
// ...
template <class T> static char sign(T num)
{
return (num >= static_cast<T>(0)) ? static_cast<char>(+1) : static_cast<char>(-1);
}
// ...
}
Что-то не так с моим кодом или это просто проблема с самим компилятором?
IDE и компилятор: Visual Studio 2010