Я пытаюсь использовать библиотеку Eigen с компилятором armcc с использованием Keil для цели Cortex M3, и я получаю ошибку компиляции:
Eigen/src/Core/Transpositions.h(387): error: #135: class template "Eigen::Transpose<Eigen::TranspositionsBase<Derived>>" has no member "derived"
Это происходит из этого кода:
class Transpose<TranspositionsBase<TranspositionsDerived> >
{
typedef TranspositionsDerived TranspositionType;
typedef typename TranspositionType::IndicesType IndicesType;
public:
explicit Transpose(const TranspositionType& t) : m_transpositions(t) {}
Index size() const { return m_transpositions.size(); }
Index rows() const { return m_transpositions.size(); }
Index cols() const { return m_transpositions.size(); }
/** \returns the \a matrix with the inverse transpositions applied to the columns.
*/
template<typename OtherDerived> friend
const Product<OtherDerived, Transpose, AliasFreeProduct>
operator*(const MatrixBase<OtherDerived>& matrix, const Transpose& trt)
{
// !!!!!!! this line triggers the error
return Product<OtherDerived, Transpose, AliasFreeProduct>(matrix.derived(), trt.derived());
}
/** \returns the \a matrix with the inverse transpositions applied to the rows.
*/
template<typename OtherDerived>
const Product<Transpose, OtherDerived, AliasFreeProduct>
operator*(const MatrixBase<OtherDerived>& matrix) const
{
return Product<Transpose, OtherDerived, AliasFreeProduct>(*this, matrix.derived());
}
const TranspositionType& nestedExpression() const { return m_transpositions; }
protected:
const TranspositionType& m_transpositions;
};
Я не очень хорош в магии шаблонов, поэтому мне интересно, как это должно работать.
Я не вижу методов, вызываемых производными в классе Transpose, он не наследуется ни от какого другого класса.
Единственный метод с таким именем находится в классе TranspositionsBase, который передается в Transpose в качестве параметра шаблона и, насколько я вижу, не используется.
Может кто-нибудь объяснить мне, что здесь происходит? И, если это возможно, почему возникает ошибка компиляции?
Задача ещё не решена.
Других решений пока нет …