将 ArrayXd 传递给 const VectorXd& 和 const Ref<const VectorXd>&

Passing ArrayXd to const VectorXd& and const Ref<const VectorXd>&

我对这两个函数的效率的理解是否正确?

VectorXd v;

void Foo(const ArrayXd&);
void Boo(const Ref<const ArrayXd>&);

// a temporary is created?
Foo(v);
// no temporary is created?
Boo(v);

此外,我还在 eigen's doc 中看到一些签名,例如 Boo,但没有 &。它与上面的 Boo 有什么实际区别吗?

是的,你的理解是正确的。

关于 Boo 的签名,请参阅此 answer