Compilation Error on Windows
Line 760 of ConstrainedSolverT_impl.hh does not compile on windows with the following error message:
e:\gitlab\builds\mjqzynsj\0\igm\build-igm\comiso\solver\ConstrainedSolverT_impl.hh(760): error C2039: 'swap': is not a member of 'gmm::simple_vector_ref<V *>' [E:\gitlab\builds\mJQzyNSJ\0\IGM\Build-IGM\build-release\CoMISo\CoMISo.vcxproj]
with
[
V=gmm::wsvector<double>
] (compiling source file E:\gitlab\builds\mJQzyNSJ\0\IGM\Build-IGM\CoMISo\Solver\ConstrainedSolver.cc)
e:\libs\general\gmm-5.0\include\gmm\gmm_matrix.h(196): note: see declaration of 'gmm::simple_vector_ref<V *>'
with
[
V=gmm::wsvector<double>
] (compiling source file E:\gitlab\builds\mJQzyNSJ\0\IGM\Build-IGM\CoMISo\Solver\ConstrainedSolver.cc)
e:\gitlab\builds\mjqzynsj\0\igm\build-igm\comiso\solver\ConstrainedSolverT_impl.hh(181): note: see reference to function template instantiation 'void COMISO::ConstrainedSolver::make_constraints_independent_reordering<RMatrixT,VectorIT>(RMatrixT &,VectorIT &,std::vector<int,std::allocator<_Ty>> &)' being compiled
with
[
RMatrixT=COMISO_GMM::WSRowMatrix,
VectorIT=COMISO_STD::IntVector,
_Ty=int
] (compiling source file E:\gitlab\builds\mJQzyNSJ\0\IGM\Build-IGM\CoMISo\Solver\ConstrainedSolver.cc)
E:\gitlab\builds\mJQzyNSJ\0\IGM\Build-IGM\CoMISo\Solver\ConstrainedSolver.cc(128): note: see reference to function template instantiation 'void COMISO::ConstrainedSolver::solve<COMISO_GMM::WSRowMatrix,COMISO_GMM::WSColMatrix,COMISO_STD::DoubleVector,COMISO_STD::IntVector>(COMISO_GMM::WSRowMatrix &,COMISO_GMM::WSColMatrix &,COMISO_STD::DoubleVector &,COMISO_STD::DoubleVector &,COMISO_STD::IntVector &,double,bool,bool)' being compiled
It seems gmm::mat_row(d_tmp, row_ordering[i])
is a gmm::wsvector<double>
on Linux, but a gmm::simple_vector_ref<gmm::wsvector<double> *>
on Windows.
I'm not sure what this line is doing. @mheistermann, can this line be implemented without swap? Or can we somehow convince Windows that mat_row
returns a wsvector
rather than a simple_vector_ref
?