从元组进行可变参数模板函数参数扩展
考虑一个带有可变参数模板参数的模板函数:
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中文网其他相关文章!