我很好奇C ++中何时需要模板参数。
例如,将一个类定义为
template<typename T> class Add{
T value;
Add(T value) : value(value){};
T operator() (T valrhs){
return value + valrhs;
}
};
如果我们想使用double创建类型为Add的对象,则需要按以下说明对其进行定义,以免发生错误,
Add<double> add5 = Add<double>(5.0);
现在让我们考虑定义如下的函数,>>
template<typename T, typename Function> T doOperation (T data, Function f){ return f(data); }
在代码中,如果要调用doOperation,则不需要模板参数。例如,>
std::cout << doOperation(5.0, add5);
输出10。为什么doOperation不需要模板参数,而定义add5则需要模板参数?
此外,将有任何方法可以使用函数指针进行定义。我一直试图找出如何使用函数指针作为参数变量而不是第二个模板参数来传递像这样的函子。
谢谢您的帮助。
我很好奇C ++中何时需要模板参数。例如,我们将一个类定义为template
在此代码中
std::cout << doOperation(5.0, add5);
编译器进行函数模板参数推导。
C ++何时需要模板参数?