Josuttis模板。 4.2非类型函数模板参数

时间:2013-12-03 21:16:14

标签: c++ templates

在本章中,Josuttis编写了一个模板函数

template <typename T, int VAL> 
T addValue (T const& x) 
{ 
    return x + VAL; 
}

然后他在transform algrorithm中使用函数来填充另一个容器。

 std::transform (source.begin(), source.end(), // start and end of source 
 dest.begin(), // start of destination 
 addValue<int,5>); // operation 

但在他写下这句话之后: 请注意,此示例存在问题:addValue是一个函数模板,函数模板是 考虑命名一组重载函数(即使集合只有一个成员)。但是,根据 当前标准,重载函数集不能用于模板参数推导。因此,你必须 强制转换为函数模板参数的确切类型:

 std::transform (source.begin(), source.end(), // start and end of source 
 dest.begin(), // start of destination 
 (int(*)(int const&)) addValue<int,5>); // operation 

这是什么意思?

0 个答案:

没有答案