SparseQR fails to compile with Intel C++ Compilers on Windows
Submitted by Semih
Assigned to Nobody
Link to original bugzilla bug (#1106)
Version: 3.2
Operating system: Windows
Description
This is the same problem as in
Commit 1b8394f7: Fix compilation with ICC/MSVC combo (eigen/eigen)
Following code fails compile with Intel C++ Compilers on windows 7 x64.
I tested it in two different configurations;
win7 x64 - Intel C++ 2015.1.148 integrated on vs2013
win7 x64 - Intel C++ 2011.0.104 integrated on vs2010
No problem with VC++ compilers!
Code is as follows;
#include <Eigen/SparseQR>
using namespace Eigen;
int main() {
typedef Eigen::SparseMatrix< double > SparseDoubleMatrix;
SparseQR< SparseDoubleMatrix, COLAMDOrdering<int> > solver;
SparseDoubleMatrix A(10,10); // Just dummy matrix for now (I know how to use SparseMatrices properly :))
solver.compute(A);
}
Error stack is as follows;
U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/Block.h(110): error : class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" has no member "operator="
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
^
detected during:
instantiation of class "Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel> [with XprType=const Eigen::SparseMatrix<double, 0, int>, BlockRows=-1, BlockCols=1, InnerPanel=1]" at line 260 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseBlock.h"
instantiation of "const Eigen::SparseMatrixBase<Derived>::ConstInnerVectorReturnType Eigen::SparseMatrixBase<Derived>::innerVector(Eigen::SparseMatrixBase<Derived>::Index) const [with Derived=Eigen::SparseMatrix<double, 0, int>]" at line 64 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparsePermutation.h"
instantiation of "void Eigen::internal::permut_sparsematrix_product_retval<PermutationType, MatrixType, Side, Transposed>::evalTo(Dest &) const [with PermutationType=Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, MatrixType=Eigen::SparseMatrix<double, 0, int>, Side=2, Transposed=0, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 61 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/ReturnByValue.h"
instantiation of "void Eigen::ReturnByValue<Derived>::evalTo(Dest &) const [with Derived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 180 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrixBase.h"
instantiation of "Derived &Eigen::SparseMatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with Derived=Eigen::SparseMatrix<double, 0, int>, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 734 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrix.h"
instantiation of "Eigen::SparseMatrix<_Scalar, _Options, _Index> &Eigen::SparseMatrix<_Scalar, _Options, _Index>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with _Scalar=double, _Options=0, _Index=int, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 508 of
"U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::factorize(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 87 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::compute(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 731 of "ArithmeticOperators.cpp"