namespace Eigen {

/** \page PassingByValue Troubleshooting - Passing Eigen objects by value to functions

Passing 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.

With Eigen, this is even more important: passing \ref FixedSizeVectorizable "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.

So for example, a function like this, where v is passed by value:

\code
void my_function(Eigen::Vector2d v);
\endcode

needs to be rewritten as follows, passing v by reference:

\code
void my_function(const Eigen::Vector2d& v);
\endcode

Likewise if you have a class having a Eigen object as member:

\code
struct Foo
{
  Eigen::Vector2d v;
};
void my_function(Foo v);
\endcode

This function also needs to be rewritten like this:
\code
void my_function(const Foo& v);
\endcode

Note that on the other hand, there is no problem with functions that return objects by value.

*/

}
