如何将容器的内容传递给 C++ 中的可变参数函数

How to pass the contents of a container to a variadic function in C++

假设我们有一个针对现有类型 T 的可变参数函数 void foo(T args...)

在 Java (void foo(T... args)) 和 C# (void foo(params T[] args)) 中传递类型 T T[] 的数组是将其内容作为参数传递给 foo

在 Scala 中 (def foo(args: T*): Unit) 我可能会传递一个 Seq[T].

如何将容器(数组、向量、迭代器等)的内容作为参数传递给 C++ 中的可变参数函数?有可能吗?

C++中的可变参数列表是在编译时建立的,而不是在运行时建立的,所以如果有的话,你只能传入一个固定长度的项目数组。

您可以使用 std::apply() 调用具有 tuple 个参数的函数。你可以 .

或者,您也可以创建自己的类似于 apply 的模板辅助函数,该函数从数组元素递归地组装参数包并为您调用该函数,或者使用无数的元编程之一标准库中的助手为您完成。