gpt4 book ai didi

c++ - 是否有一个元组 for_each() 返回从调用的函数返回的所有值的元组?

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:24 28 4
gpt4 key购买 nike

我正在浏览 this tuple for_each() implementation几个月前想知道是否有可能实现一个版本,将调用函数的返回值收集到一个元组中作为结果?

我想在我的代码库中执行此操作的原因是我有以下函数,它接受一个输入形状的可变列表,并返回一个值元组。

template <typename... T, typename... R>
static constexpr auto map_to_opengl(T &&... shapes)
{
return std::make_tuple(shape_mapper::map_to_array_floats(shapes)...);
}

好吧,我想更改我的函数签名以接受一个形状元组,并返回对每个形状调用函数的结果(这在语义上应该等同于上面的代码)。如果我能做到这一点,我就可以让我的代码更加 DRY,这对我来说很重要。

template <typename... T, typename... R>
static constexpr auto map_to_opengl(std::tuple<T...> &&shapes)
{
return tuple_foreach(shapes, &shape_mapper::map_to_array_floats);
}

但是 tuple_foreach 的实现不允许收集任何值。是否可以编写这样的函数?如果它存在于 Hana 中,我错过了它:(

我猜你不会把这个算法称为 for_each,但也许是 accumulate?我在这里不确定。

最佳答案

std::apply 做会是这样的:

template<typename T, typename F>
constexpr auto map_tuple_elements(T&& tup, F f) {
return std::apply([&f](auto&&... args){
return std::make_tuple(f(decltype(args)(args))...);
}, std::forward<T>(tup));
}

关于c++ - 是否有一个元组 for_each() 返回从调用的函数返回的所有值的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41199709/

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