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