I am currently looking into Eigen::Isometry3f, defined as
typedef Transform<float,3,Isometry> Isometry3f;.
Therewith i cannot, for example, assign an Affine3f to that Isometry3f, which is good to keep the isometry intact. (The reason is, that Mode is checked in the assignment operator of Transform.)
I can however - via the Transform::operator(...), which shortcuts to Transform::m_matrix(...) - do
Eigen::Isometry3f iso;
iso.setIdentity();
iso(1, 1) = 2; //works (but should not ?!)
and thus destroy the isometry.
Q1:
Shouldn't Transform::operator(...) be disallowed or at least issue a warning? If you really want to mess up you could still use Transform.matrix()(1,1) = 2 ...
Q2: Are there other pitfalls where i could accidentally destroy my isometry?
Q3:
If there are other pitfalls: what is the intention of Mode==Isometry? Is it not to ensure closedness/safety?