Eliminating temporary values & allocations via Eigen template expressions or Eigen::Ref

I’ve honestly never quite understood the implications of their how to pass arguments to Eigen document.

I believe the core problem is that Eigen does not have a base expression template type that’s universal. I think where we failed before is getting Ref to work with block. Then there’s the issue of Eigen’s not recommending auto for reasons I still don’t understand.

Another angle might be to more generically emplate our function arguments.
Say, instead of

foo(const Matrix<T, -1, 1>& alpha)

we coul use

foo(const C& alpha)

we have metaprograms to pull the base scalar type (T) out of container types (like C).

I spent a few minutes looking and could only find this one.