| [eigen] Strange operator behaviour | 
[ Thread Index | 
Date Index
| More lists.tuxfamily.org/eigen Archives
] 
I have observed a very strange behaviour using the ?: operator.
If I run the following progrom:
#include <iostream>
#include <Eigen/Core>
using namespace Eigen;
using namespace std;
int main(int argc, char* argv[])
{
  MatrixXd A(2,2);
  A << 11, 12,
    21, 22;
  bool flag = false;
  cout << "Matrix A:\n" << A << endl<<endl;
  MatrixXd B  = flag ? A.transpose() : A;
  cout << "Matrix B:\n" << B << endl<<endl;
  cout << "Matrix A after:\n" << A << endl<<endl;
  cout << "Flag: "<< (flag ? "true" : "false") <<endl;
}
I get this surprising output:
Matrix A:
11 12
21 22
Matrix B:
11 21
12 22
Matrix A after:
11 12
21 22
Flag: false
Does anybody have an idea, why B is initialized with A.transpose() instead
of A?
I am using Visual Studio 2012 Update4 and Eigen3.2.2
Does Eigen3.2.2 somewhere overrides the ?: operator with some strange side
effects?
I am very confused.
mwb