这可能是一个新手问题,但我认为这可能很有趣。假设我有此功能:
template <typename First, typename... T>
int ComputeSomething(const First& f, const T&... t);
我想编写第二个函数,在一般情况下,该函数调用上述函数,但是当First
和T
的类型为float
时会转换参数,即,每个函数都调用Convert
函数参数:
long Convert(float f);
template <typename First, typename... T>
int MyFun(const First& f, const T&... t) {
return ComputeSomething(f, t...);
}
// This is what I would like:
int MyFun(const float& f, const float& t...) {
return ComputeSomething(Convert(f), Convert(t)...);
}
我该如何实现?
添加透明的Convert
重载,以便跳过非浮点数(即,您可以混合使用各种类型的参数):
您可以使用帮助程序来测试是否所有类型都是float
: