|  | #include <Eigen/Dense> | 
|  | #include <iostream> | 
|  |  | 
|  | using namespace Eigen; | 
|  |  | 
|  | template <typename Derived1, typename Derived2> | 
|  | void copyUpperTriangularPart(MatrixBase<Derived1>& dst, const MatrixBase<Derived2>& src) | 
|  | { | 
|  | /* Note the 'template' keywords in the following line! */ | 
|  | dst.template triangularView<Upper>() = src.template triangularView<Upper>(); | 
|  | } | 
|  |  | 
|  | int main() | 
|  | { | 
|  | MatrixXi m1 = MatrixXi::Ones(5,5); | 
|  | MatrixXi m2 = MatrixXi::Random(4,4); | 
|  | std::cout << "m2 before copy:" << std::endl; | 
|  | std::cout << m2 << std::endl << std::endl; | 
|  | copyUpperTriangularPart(m2, m1.topLeftCorner(4,4)); | 
|  | std::cout << "m2 after copy:" << std::endl; | 
|  | std::cout << m2 << std::endl << std::endl; | 
|  | } |