Ответ 1
Таким образом, способ исправить это, из-за которого мне досадно было долгое время находить, заключается в использовании метода производного cast
описанного здесь. Теперь это определение:
internal::cast_return_type<Derived,const CwiseUnaryOp<internal::scalar_cast_op<typenameinternal::traits<Derived>::Scalar, NewType>, const Derived> >::type cast() const
Который я допускаю, поэтапный меня немного. Но получается, что это довольно легко (и единственное объяснение, которое я мог найти, было в документе Eigen 2.0, который был расстраивающим). Все, что вам нужно сделать, это следующее:
m2 = m1.cast<float>();
Задача решена.