mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Write page on template and typename keywords in C++.
After yet another question on the forum, I decided to write something on this common issue. Now we just need to link to this and get people to read it. Thanks to mattb on the forum for some links. Caveat: IANALL (I am not a language lawyer).
This commit is contained in:
22
doc/examples/TemplateKeyword_flexible.cpp
Normal file
22
doc/examples/TemplateKeyword_flexible.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#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;
|
||||
}
|
||||
20
doc/examples/TemplateKeyword_simple.cpp
Normal file
20
doc/examples/TemplateKeyword_simple.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <Eigen/Dense>
|
||||
#include <iostream>
|
||||
|
||||
using namespace Eigen;
|
||||
|
||||
void copyUpperTriangularPart(MatrixXf& dst, const MatrixXf& src)
|
||||
{
|
||||
dst.triangularView<Upper>() = src.triangularView<Upper>();
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
MatrixXf m1 = MatrixXf::Ones(4,4);
|
||||
MatrixXf m2 = MatrixXf::Random(4,4);
|
||||
std::cout << "m2 before copy:" << std::endl;
|
||||
std::cout << m2 << std::endl << std::endl;
|
||||
copyUpperTriangularPart(m2, m1);
|
||||
std::cout << "m2 after copy:" << std::endl;
|
||||
std::cout << m2 << std::endl << std::endl;
|
||||
}
|
||||
Reference in New Issue
Block a user