以数组为参数在C ++中调用可变参数函数

芬恩

假设我有一个简单的可变参数函数,如下所示:

template <typename... A>
void func(A... args)
{
    //Do stuff
}

我需要另一个函数来调用数组中的参数,比如:

int arg[3] = {1,2,3};

调用函数

func(1,2,3);

是否可以在不修改模板化功能的情况下做到这一点?

格子呢骆驼

您可以编写apply其中包含对数组和函子的引用以对解压缩后的数组进行调用的代码(您可能希望添加完善的转发等):

template <typename F, typename T, std::size_t N, std::size_t... Idx>
decltype(auto) apply_impl (F f, T (&t)[N], std::index_sequence<Idx...>) {
    return f(t[Idx]...);
}

template <typename F, typename T, std::size_t N>
decltype(auto) apply (F f, T (&t)[N]) {
    return apply_impl(f, t, std::make_index_sequence<N>{});   
}

然后,如果foo是函子类,则这样调用

apply(foo{}, a);

如果foo仅是示例中的普通模板函数,则可以将其包装在lambda中:

apply([](auto...xs){foo(std::forward<decltype(xs)>(xs)...);}, a);

Live Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为代码中的函数调用生成可变数量的参数

来自分类Dev

在 C 中的可变参数函数下调用 sprintf()

来自分类Dev

如何调用以指针数组为参数的函数?在C中

来自分类Dev

C中的可变参数函数

来自分类Dev

C 函数中的可变参数

来自分类Dev

可变参数模板扩展中的函数调用顺序

来自分类Dev

意外地在Jenkinsfile中调用可变参数函数

来自分类Dev

将可变数量的参数传递给函数,然后使用这些参数在函数中调用函数

来自分类Dev

如果函数返回类型为void,如何调用可变参数包中的所有函数?

来自分类Dev

如果函数返回类型为void,应如何调用可变参数包中的所有函数?

来自分类Dev

函数中参数的可变顺序

来自分类Dev

函数参数中的可变借位

来自分类Dev

函数中参数的可变顺序

来自分类Dev

如何调用以指针数组为参数的函数?在C

来自分类Dev

如何使用可变参数调用函数

来自分类Dev

为每个可变参数模板参数调用函数,并将结果作为构造函数参数传递

来自分类Dev

C ++中的嵌套可变参数函数

来自分类Dev

可变参数函数中的默认参数提升

来自分类Dev

如何在C ++中调用可变参数模板构造函数?

来自分类Dev

从函数中调用参数

来自分类Dev

可变参数模板函数中对重载函数的歧义调用

来自分类Dev

有时从可变参数模板函数中调用函数

来自分类Dev

在C中为函数指针参数分配数组

来自分类Dev

从C中可变参数函数的参数确定类型

来自分类Dev

C ++中没有参数可变参数模板函数

来自分类Dev

将参数传递给C中的可变参数函数

来自分类Dev

从C中可变参数函数的参数确定类型

来自分类Dev

从Swift调用可变参数的Objective-C函数

来自分类Dev

调用类内的函数的C ++ 11可变参数模板

Related 相关文章

  1. 1

    为代码中的函数调用生成可变数量的参数

  2. 2

    在 C 中的可变参数函数下调用 sprintf()

  3. 3

    如何调用以指针数组为参数的函数?在C中

  4. 4

    C中的可变参数函数

  5. 5

    C 函数中的可变参数

  6. 6

    可变参数模板扩展中的函数调用顺序

  7. 7

    意外地在Jenkinsfile中调用可变参数函数

  8. 8

    将可变数量的参数传递给函数,然后使用这些参数在函数中调用函数

  9. 9

    如果函数返回类型为void,如何调用可变参数包中的所有函数?

  10. 10

    如果函数返回类型为void,应如何调用可变参数包中的所有函数?

  11. 11

    函数中参数的可变顺序

  12. 12

    函数参数中的可变借位

  13. 13

    函数中参数的可变顺序

  14. 14

    如何调用以指针数组为参数的函数?在C

  15. 15

    如何使用可变参数调用函数

  16. 16

    为每个可变参数模板参数调用函数,并将结果作为构造函数参数传递

  17. 17

    C ++中的嵌套可变参数函数

  18. 18

    可变参数函数中的默认参数提升

  19. 19

    如何在C ++中调用可变参数模板构造函数?

  20. 20

    从函数中调用参数

  21. 21

    可变参数模板函数中对重载函数的歧义调用

  22. 22

    有时从可变参数模板函数中调用函数

  23. 23

    在C中为函数指针参数分配数组

  24. 24

    从C中可变参数函数的参数确定类型

  25. 25

    C ++中没有参数可变参数模板函数

  26. 26

    将参数传递给C中的可变参数函数

  27. 27

    从C中可变参数函数的参数确定类型

  28. 28

    从Swift调用可变参数的Objective-C函数

  29. 29

    调用类内的函数的C ++ 11可变参数模板

热门标签

归档