我正在尝试通过引入“using
”关键字来增加我的代码可读性。
namespace EigenRM
{
template<typename T>
using MatrixX<T> = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
}
此代码无效。
我见过使用“using
”删除所有模板参数的示例,但没有用于保留模板参数。这甚至可能吗?
答案 0 :(得分:4)
尝试在def logfunc(T, a, b, c):
arg = b - T
arg[np.where(arg < 1.e-16)] = 1.e-16
return a*np.log(arg) + c
<T>
MatrixX
如果您在名称template<typename T>
using MatrixX<T> = Eigen::Matrix<T, ...
// wrong ....^^^
的{{1}}定义之前加上模板声明,则隐含您要在using
上定义模板参数,所以只需
foo
- 编辑 -
OP说
这正是我不想做的事情。我试图在未模板化的函数中编写
foo
//而不是namespace EigenRM { template<typename T> using MatrixX = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>; }
如果您删除“EigenRM::MatrixX<double>
”,这就是您所获得的:Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
成为<T>
的别名。
我没有EigenRM::MatrixX<double>
安装,但下面的例子应该解释我的意思
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>