Template linker errors with gcc 4.6.3

Jonathan Wakely jwakely.gcc@gmail.com
Mon Nov 4 15:40:00 GMT 2013


On 4 November 2013 15:34, David Aldrich wrote:
>
>> At a guess, maybe because the function is declared as something like
>> Matrix<T>::eye(unsigned, double = 0.0) i.e. just because you pass the function
>> an int doesn't mean that's what the function is declared to take.
>
> You are absolutely correct, of course, eye() is defined in Matrix.h as follows:
>
> template<class T> class Matrix : public MatrixBase
> {
> public:
>     <snip>
>     static Matrix<T> eye( unsigned a_size, T a_scalingFactor=1.0 ) DONT_INLINE;
>     <snip>
> }
>
> Does that point to the root cause of the problem?

No, it just means that the compiler is correct to require
Matrix<double>::eye(unsigned int, double) instead of
Matrix<double>::eye(int)



More information about the Gcc-help mailing list