特征混叠返回值优化

时间:2014-12-05 00:10:04

标签: c++ eigen

假设我定义了一个按值返回Eigen::MatrixXd的函数,例如

Eigen::MatrixXd f(const Eigen::MatrixXd& in)
{
    Eigen::MatrixXd tmp = in; // copy the input
    // do something here with tmp
    return tmp;
}

我然后使用

Eigen::MatrixXd A;
A = f(A);

据我了解,这里没有别名危险,因为f(A)会返回一个临时值,然后被分配给A。但是,大多数编译器都执行返回值优化(RVO),而临时编译器直接在A中构建。在这种情况下,我可以在作业A = f(A);中遇到麻烦吗?在我编写的代码中,事情似乎工作正常,但是我想知道这个任务是否确实是安全的。

0 个答案:

没有答案