I get the error at the end of this email compiling this code with MVC++ 7.1 and boost 1.33.1:
 
==== code =====
boost::numeric::ublas::matrix< float > triangular( 3, 3 );
boost::numeric::ublas::vector<float> b( 3 );
const int singular = boost::numeric::ublas::lu_factorize( triangular );
if( singular == 0 )
{
    boost::numeric::ublas::lu_substitute( triangular, b );
}
======
 
it would seem that the two definitions at lines 257 and 316 conflict. when I comment out the definition starting at line 316 it all works fine. Am I doing something wrong?
 
==== compiler error ======
linalg.cpp(29) : error C2666: 'boost::numeric::ublas::lu_substitute' : 2 overloads have similar conversions
C:\Program Files\boost\boost\numeric\ublas\lu.hpp(257): could be 'void boost::numeric::ublas::lu_substitute<boost::numeric::ublas::matrix<T>,C>(const M &,boost::numeric::ublas::vector_expression<E> &)'
with
[
T=float,
C=boost::numeric::ublas::vector<float>,
M=boost::numeric::ublas::matrix<float>,
E=boost::numeric::ublas::vector<float>
]
C:\Program Files\boost\boost\numeric\ublas\lu.hpp(316): or 'void boost::numeric::ublas::lu_substitute<C,boost::numeric::ublas::vector<T>>(boost::numeric::ublas::matrix_expression<E> &,const M &)'
with
[
C=boost::numeric::ublas::matrix<float>,
T=float,
E=boost::numeric::ublas::matrix<float>,
M=boost::numeric::ublas::vector<float>
]
while trying to match the argument list '(boost::numeric::ublas::matrix<T>, boost::numeric::ublas::vector<T>)'
with
[
T=float
]
and
[
T=float
]