首页 > 后端开发 > C++ > 如何将值元组作为参数传递给 C 中的可变参数模板函数?

如何将值元组作为参数传递给 C 中的可变参数模板函数?

Patricia Arquette
发布: 2025-01-02 22:07:40
原创
542 人浏览过

How Can I Pass a Tuple of Values as Arguments to a Variadic Template Function in C  ?

从元组进行可变参数模板函数参数扩展

考虑一个带有可变参数模板参数的模板函数:

template<typename Tret, typename... T> Tret func(const T&... t);
登录后复制

如何您可以使用值元组作为调用 func() 吗参数?

现代 C 解决方案(C 17 及更高版本)

在 C 17 中,std::apply() 函数提供了一个优雅的解决方案:

std::apply(the_function, the_tuple);
登录后复制

叮当 3.9解决方法

如果您使用的是 Clang 3.9,则可以改用 std::experimental::apply 函数。

处理模板化函数

如果 the_function 是模板化的,您可以使用以下内容解决方法:

#include <tuple>

template <typename T, typename U> void my_func(T &&t, U &&u) {}

int main() {

  std::tuple<int, float&> my_tuple;

  std::apply([](auto &&... args) { my_func(args...); }, my_tuple);

  return 0;
}
登录后复制

通用重载集调用

有关可以处理重载集和函数模板的更通用的解决方案,请参阅 https:// /blog.tartanllama.xyz/passing-overload-sets/.

以上是如何将值元组作为参数传递给 C 中的可变参数模板函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板