转换可变参数的参数

问题描述 投票:1回答:2

这可能是一个新手问题,但我认为这可能很有趣。假设我有此功能:

template <typename First, typename... T>
int ComputeSomething(const First& f, const T&... t);

我想编写第二个函数,在一般情况下,该函数调用上述函数,但是当FirstT的类型为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)...);
}

我该如何实现?

c++ c++11 templates variadic-templates
2个回答
3
投票

添加透明的Convert重载,以便跳过非浮点数(即,您可以混合使用各种类型的参数):


2
投票

您可以使用帮助程序来测试是否所有类型都是float

© www.soinside.com 2019 - 2024. All rights reserved.