Hi everyone,
My compiler MSVS 2005 give an error when I try to compile a Matrix class with traits and policies for zero initialisation and return types.
Here is a snippet of my Traits.h :
and this is my (free) operator+ template:Code:namespace LinAlg { template<typename T1, typename T2> struct ReturnType; // partial specialisation for Complex - I template<> struct ReturnType<Complex, Complex> { typedef Complex Return; }; // partial specialisation for Complex - II template<> struct ReturnType<Real, Complex> { typedef Complex Return; }; // partial specialisation for Complex - III template<> struct ReturnType<Complex, Real> { typedef Complex Return; }; // specialisation for Real: Real return type iff both arguments Real template<> struct ReturnType<Real, Real> { typedef Real Return; }; }; // end namespace
The error message isCode:// addition template<typename T1, typename T2> Matrix<typename ReturnType<T1, T2> :: ResultT> operator+( Matrix<T1> const& A1, Matrix<T2> const& A2) { Matrix<typename ReturnType<T1, T2> :: ResultT> result( A1); return ( result += A2); }
with most important line:
Thanks a huge lot for your help!!![cc] testMatrix.cpp
[cc] D:\V5.1.0\visual.static.frame.HEAD\must\com.airbus .must.static.data.service\src\pluginlib\cxx\test\t estMatrix.cpp(55) : error C2893: Failed to specialize function template 'LinAlg :: Matrix<
ReturnType<T1,T2>::ResultT> LinAlg :: operator +(const LinAlg :: Matrix<T> &,const LinAlg :: Matrix<T2> &)'
[cc] With the following template arguments:
[cc] 'Real'
[cc] 'Complex'



LinkBack URL
About LinkBacks



CornedBee