gpt4 book ai didi

c++ - Eigen::Ref> 的模板参数推导

转载 作者:行者123 更新时间:2023-11-28 04:49:34 24 4
gpt4 key购买 nike

以下是模板参数推导的解决方法。

此解决方法是否必要?

这会阻止 Eigen 优化跨越 func 边界的表达式吗?

#include <Eigen/Eigen>
#include <iostream>
template <typename T> using Mat = Eigen::Matrix<T, 3, 1>;

template <typename T = int>
inline void func(const Eigen::Ref<const Mat<T> >& a) {
// calculations
}

int main() {
const Mat<int> a;
const Eigen::Ref<const Mat<int> > b = a;
func(b); // error if I use func(a);
}

最佳答案

这在性能方面非常好,但是模板推导不起作用,所以要么将 func 设为非模板函数,要么替换 Ref通过更一般的 const MatrixBase<Derived>& a并使用静态断言来保护非 3x1 矩阵类型。在后一种情况下,最好投 a在使用它之前转换为它真正的派生类型:

template <typename Derived>
void func(const Eigen::MatrixBase<Derived>& a_base) {
const Derived& a(a_base.derived());
// calculations
}

关于c++ - Eigen::Ref<Mat<T>> 的模板参数推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com