尝试删除
<T>
之后
MatrixX
template<typename T>
using MatrixX<T> = Eigen::Matrix<T, ...
如果您在
using
名称的定义
foo
傅
namespace EigenRM
{
template<typename T>
using MatrixX = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
}
--编辑--
OP说
EigenRM::MatrixX<double>
//而不是
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
在未模板函数中
这正是如果你删除“
<T>
":
特征rm::矩阵x<双(>);
成为的别名
.
我没有一个
Eigen
但是下面的例子应该解释我的意思
#include <type_traits>
template <typename, typename, typename>
struct foo;
template <typename T>
using bar = foo<T, float, int>;
int main ()
{
static_assert(std::is_same< bar<double>,
foo<double, float, int> >{}, "!");
}