C++ 为什么要显式指定模板参数的类型?
功能模板具有如下原型:C++ 为什么要显式指定模板参数的类型?,c++,templates,C++,Templates,功能模板具有如下原型: template <int pot> inline int gridMaxSelection(Eigen::Vector3f* grads, bool* map_out, int w, int h, float THFac); 模板 内联int gridMaxSelection(特征::矢量3F*梯度,布尔*映射输出, 整数w、整数h、浮点数THFac); 它的名字是这样的: if (spar
template <int pot>
inline int gridMaxSelection(Eigen::Vector3f* grads, bool* map_out,
int w, int h, float THFac);
模板
内联int gridMaxSelection(特征::矢量3F*梯度,布尔*映射输出,
整数w、整数h、浮点数THFac);
它的名字是这样的:
if (sparsityFactor == 1)
numGoodPoints = gridMaxSelection<1>(grads, map, w, h, THFac);
else if (sparsityFactor == 2)
numGoodPoints = gridMaxSelection<2>(grads, map, w, h, THFac);
else if (sparsityFactor == 3)
numGoodPoints = gridMaxSelection<3>(grads, map, w, h, THFac);
else if (sparsityFactor == 4)
numGoodPoints = gridMaxSelection<4>(grads, map, w, h, THFac);
if(sparsityFactor==1)
numGoodPoints=gridMaxSelection(梯度、地图、w、h、THFac);
else if(sparsityFactor==2)
numGoodPoints=gridMaxSelection(梯度、地图、w、h、THFac);
else if(稀疏因子==3)
numGoodPoints=gridMaxSelection(梯度、地图、w、h、THFac);
else if(sparsityFactor==4)
numGoodPoints=gridMaxSelection(梯度、地图、w、h、THFac);
为什么不简单地将
pot
参数设为函数参数呢?有效率方面的问题吗?没有,可能不会有任何效率方面的问题。通常没有
模板非类型参数和函数参数之间的区别在于可以使用它们做什么。e、 g.如果函数定义需要在整型常量表达式中使用该参数,则必须将其设置为模板参数:
template<int n>
void f()
{
static_assert(n == 42); // ok
}
不,可能不会有任何效率问题。通常没有 模板非类型参数和函数参数之间的区别在于可以使用它们做什么。e、 g.如果函数定义需要在整型常量表达式中使用该参数,则必须将其设置为模板参数:
template<int n>
void f()
{
static_assert(n == 42); // ok
}