Eigen::Map 默认模板参数如何工作?
How do Eigen::Map default template arguments work?
这很可能不是 Eigen 特有的,但这是我第一次看到它并且不知道它是如何工作的。
在 definition of Eigen::Map 中有 3 个模板参数:<typename PlainObjectType, int MapOptions, typename StrideType>
.
没有设置默认值,但是从 these examples 中可以看出,最后两个参数没有指定。例如,我们可以简单地写成 Map<Matrix3i>(array)
.
我错过了什么吗?这是特定于这种情况还是在 C++ 中更普遍?
关于它的可能性很小。第一个更简单,是在模板声明而不是定义中给出默认参数。也许在库头的某个地方有这样的东西:
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
默认选项定义在 header ForwardDeclarations.h
:
template<typename MatrixType,
int MapOptions=Unaligned,
typename StrideType = Stride<0,0>
>
class Map;
(为了便于阅读而添加了换行符)
这很可能不是 Eigen 特有的,但这是我第一次看到它并且不知道它是如何工作的。
在 definition of Eigen::Map 中有 3 个模板参数:<typename PlainObjectType, int MapOptions, typename StrideType>
.
没有设置默认值,但是从 these examples 中可以看出,最后两个参数没有指定。例如,我们可以简单地写成 Map<Matrix3i>(array)
.
我错过了什么吗?这是特定于这种情况还是在 C++ 中更普遍?
关于它的可能性很小。第一个更简单,是在模板声明而不是定义中给出默认参数。也许在库头的某个地方有这样的东西:
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
默认选项定义在 header ForwardDeclarations.h
:
template<typename MatrixType,
int MapOptions=Unaligned,
typename StrideType = Stride<0,0>
>
class Map;
(为了便于阅读而添加了换行符)