这很可能不是Eigen所特有的,但这是我第一次看到它,并想知道它是如何工作的。
definition of Eigen::Map中有3个模板参数:<typename PlainObjectType, int MapOptions, typename StrideType>
。
未设置默认值,但是如these examples所示,未指定最后两个参数。例如,我们可以简单地写Map<Matrix3i>(array)
。
我想念什么吗?这是特定于这种情况还是在C ++中更普遍?
答案 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