Eigen :: Map默认模板参数如何工作?

时间:2018-07-18 09:26:17

标签: c++ eigen

这很可能不是Eigen所特有的,但这是我第一次看到它,并想知道它是如何工作的。

definition of Eigen::Map中有3个模板参数:<typename PlainObjectType, int MapOptions, typename StrideType>

未设置默认值,但是如these examples所示,未指定最后两个参数。例如,我们可以简单地写Map<Matrix3i>(array)

我想念什么吗?这是特定于这种情况还是在C ++中更普遍?

2 个答案:

答案 0 :(得分:2)

默认选项在标头ForwardDeclarations.h中定义:

template<typename MatrixType, 
         int MapOptions=Unaligned,
         typename StrideType = Stride<0,0>
>
class Map;

(添加了换行符以提高可读性)

答案 1 :(得分:0)

关于它的可能性很小。第一个比较琐碎,是在模板声明而不是定义中提供默认参数。也许在库头中的某处是这样的:

template<typename PlainObjectType,
     int MapOptions = <some default options>,
     typename StrideType = <some default type>> 
class Map;

第二种可能性是partial template specialization, about which You can read at cppreference.com