#include #include USING_PART_OF_NAMESPACE_EIGEN using namespace std; // define a custom template binary functor template struct MakeComplexOp EIGEN_EMPTY_STRUCT { typedef complex result_type; complex operator()(const Scalar& a, const Scalar& b) const { return complex(a,b); } }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(), m2 = Matrix4d::Random(); cout << m1.binaryExpr(m2, MakeComplexOp()) << endl; return 0; }