首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Args的n个参数..。从位置m开始

用Args的n个参数..。从位置m开始
EN

Stack Overflow用户
提问于 2016-03-25 09:51:14
回答 1查看 58关注 0票数 1

假设我有不同的函数,这些函数有可变的参数数。第一个参数总是通过其他方法获得的指针。使用模板包展开通过另一个模板获得的所有其他参数。

用于调用这些函数的模板如下:

代码语言:javascript
复制
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来找出第一个参数的类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-25 10:01:03

这就是你要找的吗?

代码语言:javascript
复制
template<typename RT, typename A0, typename... Args>
inline RT call(RT(*function)(A0, Args...))
{
    return function(pointer_from_somewhere, bind_argument<Args>::get_arg()...);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36217632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档