2017-04-18 36 views
0

我試圖編譯Eigen3 PartialPivLU example徵PartialPivLU例​​如不會編譯

MatrixXd A(2,2);
A < < 2,-1,1,3;
部分封閉>> lu(A);

但我得到編譯器錯誤(見下文)。

如果我刪除「參考<>它編譯OK。有誰知道如何使用PartialPivLU與參考<>?

感謝 史蒂夫

In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h: In instantiation of 'class Eigen::PartialPivLU<Eigen::Ref<Eigen::Matrix<double, -1, -1> > >': 
test3.cc:9:36: required from here 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:52:10: error: 'Options' is not a member of 'Eigen::PartialPivLU<Eigen::Ref<Eigen::Matrix<double, -1, -1> > >::MatrixType {aka Eigen::Ref<Eigen::Matrix<double, -1, -1> >}' 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h: In instantiation of 'Eigen::PartialPivLU<MatrixType>::PartialPivLU(const MatrixType&) [with _MatrixType = Eigen::Ref<Eigen::Matrix<double, -1, -1> >; Eigen::PartialPivLU<MatrixType>::MatrixType = Eigen::Ref<Eigen::Matrix<double, -1, -1> >]': 
test3.cc:9:36: required from here 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: error: no matching function for call to 'Eigen::Ref<Eigen::Matrix<double, -1, -1> >::Ref(Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index, Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index)' 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: candidates are: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:211:12: note: template<class Derived> Eigen::Ref::Ref(const Eigen::DenseBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:211:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'const Eigen::DenseBase<Derived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:204:12: note: template<class Derived> Eigen::Ref::Ref(Eigen::PlainObjectBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:204:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'Eigen::PlainObjectBase<OtherDerived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:194:12: note: template<class Derived> Eigen::Ref::Ref(const Eigen::PlainObjectBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:194:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'const Eigen::PlainObjectBase<OtherDerived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:188:76: note: Eigen::Ref<Eigen::Matrix<double, -1, -1> >::Ref(const Eigen::Ref<Eigen::Matrix<double, -1, -1> >&) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:188:76: note: candidate expects 1 argument, 2 provided 
+0

如果你閱讀了你鏈接到的文件,你會發現這個功能只能從Eigen 3.3開始使用,你的錯誤日誌表明你正在使用Eigen 3.2 0.8 – chtz

回答

0

由於chtz指出,問題是你需要使用Eigen 3.3或更高版本