gpt4 book ai didi

c++ - 统一扩展两个参数包

转载 作者:行者123 更新时间:2023-11-30 02:17:00 25 4
gpt4 key购买 nike

我正在使用来自另一个容器的值更新容器中的一些元素(在编译时选择)。现在我正在做类似的事情:

template<size_t... indices>
void update(value_t values, index_sequence<indices...>) {
int i = 0;
((data[indices] = values[i++], ...);
}

问题:是否可以通过使用另一个编译时序列来避免使用变量 i,例如以下几行内容:

template<size_t... indices1, size_t... indices2>
void update_helper(value_t values, index_sequence<indices1...>,
index_sequence<indices2...>) {
static_assert(sizeof...(indices1) == sizeof...(indices2), "");
((data[indices1] = values[indices2], ...);
}

template<size_t... indices>
void update(value_t values, index_sequence<indices...> i) {
update_helper(values, i, make_index_sequence<sizeof...(indices)>{});
}

最佳答案

是的,这是可能的(只要它们的大小相同)。

template <size_t... indices1, size_t... indices2>
void update_helper(value_t values,
index_sequence<indices1...>,
index_sequence<indices2...>)
{
static_assert(sizeof...(indices1) == sizeof...(indices2), "");
((data[indices1] = values[indices2], ...);
}

有效。

关于c++ - 统一扩展两个参数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128524/

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