Operations in Eigen Expressions hold their arguments either by value or by
reference. Which one is chosen depends on type of the argument. Other
operations are held by value. "Heavy" objects that can hold data themselves,
such as Eigen::Matrix
or Eigen::Ref
are instead held by reference. This
is the only criterion - holding rvalue arguments by value is not supported,
so we can not use perfect forwarding.
When returning an expression from a function we have to be careful that any