gpt4 book ai didi

C++:转发参数包和 std::tuple/array 的总和

转载 作者:行者123 更新时间:2023-11-30 04:06:08 26 4
gpt4 key购买 nike

<分区>

我想实现类似下面的成员函数(方法)的东西,它应该增加每个参数对应于参数索引的一些加数(加数)和将其转发给另一个可变参数模板函数:

template<typename... Int> // a bunch of integral types (e.g. int, size_t, char)
void ForwardToFuncIncreased(Int... ints) {
static_assert(sizeof...(Ints) == std::tuple_size<decltype(summands_)>::value,
"Incorrect number of integral types provided");

Func( (ints + std::get<PARAM_INDEX(ints)>(summands_))... ); // failed attempt
}

其中 summands_ 是类型为 std::tuplestd::array 的成员变量(您可以假设两者之一)。基本要求是与以下相比,它应该没有运行时开销:

Func(int0 + std::get<0>(summands_), int1 + std::get<1>(summands_), ...);

(假设我为最多 N 个模板参数重载了函数)。

如果没有必要的运行时开销就不可能做到这一点,我愿意进行某些修改(尤其是在我的类中存储额外内容或修改类型的方式)。

注意:我的目的不是提取模板参数索引,而是希望在没有它的情况下实现我需要的。

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