Я думаю проблема во friend объявлении. Компилятор понял его не как темплейт (далее написанный), а как простую функцию. Простая функция имеет преимущество перед темплейтом при вызове, так что из main() вызывается она, а самой функции нет.
-- Ср июл 22, 2015 09:02:01 --Добавьте форвард объявления перед Matrix:
Код:
template <class T> class Matrix;
template <class T> Matrix<T> Test(Matrix<T> value);
template <class T> Matrix<T> operator+(Matrix<T> op1, Matrix<T> op2);
а в классе к friend добавьте <>:
Код:
friend Matrix Test<>(Matrix value);
friend Matrix operator+<>(Matrix op1, Matrix op2);
-- Ср июл 22, 2015 09:04:48 --Кстати, если написали конструктор копирования, до должен быть и оператор присваивания.
И перестаньте писать register - он давно уже компиляторами игнорируется.