#include #include template void copyUpperTriangularPart(Eigen::MatrixBase& dst, const Eigen::MatrixBase& src) { /* Note the 'template' keywords in the following line! */ dst.template triangularView() = src.template triangularView(); } int main() { Eigen::MatrixXi m1 = Eigen::MatrixXi::Ones(5, 5); Eigen::MatrixXi m2 = Eigen::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; }