gpt4 book ai didi

c++ - 在 C++ 中解压参数包

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:26 26 4
gpt4 key购买 nike

我有两个函数 fgf 异步计算它的返回值并返回一个 future 。现在,基于 f 的几个返回值,我想调用 g,但我想确保 f 的值的计算> 并行发生。

考虑以下代码:

template <typename T>
std::future<T> f(T& t);

template <typename... T>
void g(T&&... t)

template <typename... T>
void call_wrapper(T&&... t) {
auto f1 = f(t1); // How do I set the values of f1... fn
auto f2 = f(t2);
...
g(f1.get(), f2.get()....); // How do I call g
}

如何从 call_wrapper 函数的可变参数模板 T 中解压类型?

最佳答案

[Edit2:我想我误解了这个问题,我忘记了 subzero 想要返回 std::future 并且只是认为唯一的问题是参数包语法。希望在我的第一次编辑中使用辅助函数应该可以工作]

你可以简单地做:

template <typename... T>
void call_wrapper(T&&... t) {
g(f(std::forward<T>(t)).get()...);
}

除非我误解了你想做什么。

Edit1:如果你想做别的事情,你可以把这个函数分成两个调用,像这样:

template<typename... T>
void helper(T&&... t) {
// ...
g(std::forward<T>(t).get()...);
}

template <typename... T>
void call_wrapper(T&&... t) {
helper(f(std::forward<T>(t))...);
}

关于c++ - 在 C++ 中解压参数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com