Map<const Quaterniond> compile error
Submitted by Huang Qinjin
Assigned to Nobody
Link to original bugzilla bug (#1461)
Version: 3.3 (current stable)
Operating system: Linux
Description
With g++ 5.4 and eigen 3.3.4 on ubuntu 16.04
const double d[4] = {0, 0, 0, 1};
Map<const Vector4d> v(d);
double s = v.w(); // ok
Map<const Quaterniond> q(d);
double w = q.w(); // compile error
/usr/local/include/eigen3/Eigen/src/Geometry/Quaternion.h:76:84: error: binding ‘const Scalar {aka const double}’ to reference of type ‘Eigen::QuaternionBase<Eigen::Map<const Eigen::Quaternion<double> > >::Scalar& {aka double&}’ discards qualifiers
EIGEN_DEVICE_FUNC inline Scalar& w() { return this->derived().coeffs().coeffRef(3); }