在 Eigen 中使用 lpNorm

Use of lpNorm in Eigen

我正在尝试在模板函数中进行一些L_p范数计算

template<typename Number>
Number foo(const Eigen::MatrixBase<Number>& matrix)
{
  return matrix.lpNorm<1>(); 
}

但是,如果我尝试调用 foo(matrix),CLang 会在行尾抛出错误 "expected expression"。如果我使用具体定义的(双)矩阵,lpNorm 工作得很好。我该如何处理这个案例?

典型的 C++ 错误。解决方案是使用 template 关键字,如下所示:

return matrix.template lpNorm<1>();

参见details