
Hi all, Here is an incompatibility issue I have been running into with VC8.0. The code I am trying to compile is as follows (just a simple test case to reproduce the error): #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> using namespace boost::numeric; typedef ublas::matrix<double> Matrix; typedef ublas::matrix_column<Matrix> Matrix_Col; int main() { Matrix mtx_v; Matrix_Col cv0(mtx_v,0), cv1(mtx_v,1); Matrix_Col::const_iterator cv0_ite(cv0.begin()), cv1_ite(cv1.begin()); // line 13 } This code compiles fine under gcc but VC8.0 issues the following two errors: --------------------------- ./boost/numeric/ublas/matrix_proxy.hpp(707) : error C2064: term does not evaluate to a function taking 0 arguments ./boost/numeric/ublas/matrix_proxy.hpp(706) : while compiling class template member function 'boost::numeric::ublas::matrix_column<M>::const_iterator::const_iterator(const std::iterator<_Category,_Ty> &)' with [ M=Matrix, _Category=boost::numeric::ublas::dense_random_access_iterator_tag, _Ty=double ] .\2d-morph.cpp(13) : see reference to class template instantiation 'boost::numeric::ublas::matrix_column<M>::const_iterator' being compiled with [ M=Matrix ] ./boost/numeric/ublas/matrix_proxy.hpp(707) : error C2039: 'it_' : is not a member of 'std::iterator<_Category,_Ty>' with [ _Category=boost::numeric::ublas::dense_random_access_iterator_tag, _Ty=double ] --------------------------- What I can tell from the errors above is that VC8.0 takes cv0.begin()/cv1.begin() to return a std::iterator which is then passed to the Matrix_Col::const_iterator constructor. The constructor then tries to access it.it_ (see second error) which does not exist in std::iterator. Is there any issue with VC8.0 not returning ublas::matrix_column<M>::iterator (but std::iterator instead) in the begin() function of matrix_proxy.hpp (line 870)? Any help how to work around this issue are greatly appreciated. Regards, Philipp Robbel