Hello !

I'm getting many errors I have no idea how to correct them. The code seems fine to me but it does look like it isn't.

Code:
#ifndef MATRIX_H_INCLUDED
#define MATRIX_H_INCLUDED

#include <list>

template < class T >
class Matrix
{
public:
	bool SquareMatrix( );
	static MATRIX_PTR Minor(const Matrix< T >&);
private:
	typedef std::auto_ptr< Matrix< T > > MATRIX_PTR;
	unsigned int Rows, Cols;
	std::list< std::list< T > > Data;
	MATRIX_PTR Temp;
};

template < class T >
bool Matrix< T >::SquareMatrix( )
{
	return (Rows == Cols);
}

template < class T >
MATRIX_PTR Matrix< T >::Minor(const Matrix< T >& m)
{
	
}

#endif // MATRIX_H_INCLUDED
error C2236: '<Unknown>' '<Unknown>' inattendu
error C2143: syntax error : missing '>' before'{'
error C2079: 'Matrix' uses class 'Matrix' undefined
error C2988: cannot recognize template declaration / definition
error C2059: syntax error : '<end Parse>'
error C2143: syntax error : missing ';' before'<'
error C2988: cannot recognize template declaration / definition
error C2059: syntax error : '<'
error C2039: 'Minor' : is not a member of 'operator``global namespace'''
error C2039: 'SquareMatrix' : is not a member of 'operator``global namespace'''
error C2447: '{' : function header missing (old format formal list ?)
syntax error : missing ';' before'{'
Any info would be more than welcome. I have tried moving around the typedef, using a #define instead, not defining a new type at all.. etc.