1namespace Eigen { 2 3/** \eigenManualPage TopicPassingByValue Passing Eigen objects by value to functions 4 5Passing objects by value is almost always a very bad idea in C++, as this means useless copies, and one should pass them by reference instead. 6 7With Eigen, this is even more important: passing \ref TopicFixedSizeVectorizable "fixed-size vectorizable Eigen objects" by value is not only inefficient, it can be illegal or make your program crash! And the reason is that these Eigen objects have alignment modifiers that aren't respected when they are passed by value. 8 9So for example, a function like this, where v is passed by value: 10 11\code 12void my_function(Eigen::Vector2d v); 13\endcode 14 15needs to be rewritten as follows, passing v by reference: 16 17\code 18void my_function(const Eigen::Vector2d& v); 19\endcode 20 21Likewise if you have a class having a Eigen object as member: 22 23\code 24struct Foo 25{ 26 Eigen::Vector2d v; 27}; 28void my_function(Foo v); 29\endcode 30 31This function also needs to be rewritten like this: 32\code 33void my_function(const Foo& v); 34\endcode 35 36Note that on the other hand, there is no problem with functions that return objects by value. 37 38*/ 39 40} 41