Der folgende Code weist unerwartet (0, -1, 0) statt (0, 1, 0) wie vorgesehen zu. Warum? Irgendwelche Ideen?Unerwünschte/unerwartete Compiler-Magic mit Eigen- und Ternäroperator
#include <Eigen/Dense>
int main()
{
const bool useFirst = false;
// This is the original use-case.
const Eigen::Vector3d vect1
= useFirst ? -Eigen::Vector3d::UnitZ() : Eigen::Vector3d::UnitY();
// This version is somewhat simplified, but exhibits the same problem.
const Eigen::Vector3d unitZ(0.0, 0.0, 1.0), unitY(0.0, 1.0, 0.0);
const Eigen::Vector3d vect2 = useFirst ? -unitZ : unitY;
// FYI, this version does not compile (?).
// const Eigen::Vector3d vect3
// = useFirst ? -unitZ : Eigen::Vector3d::UnitY();
}
Auf meinem Rechner kompiliert die 'vect1' Version nicht, aber die' vect2' Version erzeugt (0, 1, 0) wie vorgesehen. – Cholts