我有一个适用于 Lunix/GCC 的代码。但是,在 Windows/MSVC 2017 上编译时,我面临internal compiler error
:
.hpp:
namespace g2o {
namespace internal {
template<typename MatrixType>
inline void axpy(const MatrixType& A, const Eigen::Map<const Eigen::VectorXd>& x, int xoff, Eigen::Map<Eigen::VectorXd>& y, int yoff) {
y.segment<MatrixType::RowsAtCompileTime>(yoff) += A * x.segment<MatrixType::ColsAtCompileTime>(xoff);
}
template<int t>
inline void axpy(const Eigen::Matrix<double, Eigen::Dynamic, t>& A, const Eigen::Map<const Eigen::VectorXd>& x, int xoff, Eigen::Map<Eigen::VectorXd>& y, int yoff) {
y.segment(yoff, A.rows()) += A * x.segment<Eigen::Matrix<double, Eigen::Dynamic, t>::ColsAtCompileTime>(xoff);
}
template<> /*******ERROR HERE*******/
inline void axpy(const Eigen::MatrixXd& A, const Eigen::Map<const Eigen::VectorXd>& x, int xoff, Eigen::Map<Eigen::VectorXd>& y, int yoff) {
y.segment(yoff, A.rows()) += A * x.segment(xoff, A.cols());
}
} // end namespace internal
} // end namespace g2o
我看到解决方案告诉我应该执行以下操作:
template<Eigen::MatrixXd> inline void axpy<Eigen::MatrixXd> ....
但是,它没有用。
编译器生成的错误消息:
错误 C1001 编译器发生内部错误。