假设我有不同的函数,它们具有可变数量的参数。第一个参数始终是通过其他方式获得的指针。我通过另一个模板使用模板包扩展获得的所有其他参数 我用来调用这些函数的模板如下:
template<typename RT, typename... Args>
inline RT call(RT(*function)(Args...))
{
return function(pointer_from_somewhere, bind_argument<Args>::get_arg()...);
}
这显然无法编译,因为它为所有参数执行模板扩展,因此存在太多参数
由于我总是通过其他方式获得第一个参数,如何从第二个参数开始为sizeof...(Args) - 1
参数进行模板包扩展?
修改
虽然为了演示目的而缩小模板,但是第一个参数(指针)总是以第一个参数的类型重新解释。我使用std::tuple_element<0, std::tuple<Args...>>::type
来查找第一个参数的类型。
答案 0 :(得分:2)
这是你在找什么?
template<typename RT, typename A0, typename... Args>
inline RT call(RT(*function)(A0, Args...))
{
return function(pointer_from_somewhere, bind_argument<Args>::get_arg()...);
}