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

4
这可能与Eigen无关,但这是我第一次看到它,并想知道它是如何工作的。
Eigen :: Map的定义中,有3个模板参数:<typename PlainObjectType,int MapOptions,typename StrideType>
没有设置默认值,但是正如这些示例中所示,最后两个参数未指定。例如,我们可以简单地编写Map<Matrix3i>(array)
我错过了什么吗?这是特定于此案例还是更普遍地适用于C ++?
2个回答

4
默认选项在头文件ForwardDeclarations.h中定义:
template<typename MatrixType, 
         int MapOptions=Unaligned,
         typename StrideType = Stride<0,0>
>
class Map;

(newlines added for readability)


好发现,完全忘记检查是否有其他地方的前向声明。谢谢。 - njroussel

0

关于这个问题有几种可能性。第一种,比较琐碎的是,在模板声明中给出默认参数而不是定义中。也许在库头文件中有类似下面的内容:

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

第二种可能性是部分模板特化,您可以在cppreference.com上阅读相关内容


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接