递增参数包中的每个值



我目前正试图增加参数包中的每个值,该参数包中充满了某种未知类型的std::vector::迭代器。我目前正在努力弄清楚...语法是如何工作的。我本想增加每一个值,它将是++input_starts ...,但这只会给我一个编译器错误。以下是整个功能供参考:

template<
typename RETURN,
typename ... INPUTS
>
void thread_instance(std::function<RETURN(INPUTS ...)> function,
typename std::vector<RETURN>::iterator output_start,
typename std::vector<RETURN>::iterator output_end,
INPUTS ... input_starts)
{
for (; output_start != output_end; ++output_start, ++input_starts ...)
{
*output_start = function(*input_starts ...);
}
}

替换此:

++input_starts ...

有了这个:

(++input_starts, ...)

这是一个C++17倍的表达式(您的用例类似于该页上的push_back_vec()示例(。

简单演示:https://godbolt.org/z/YoY4b1

相关内容

  • 没有找到相关文章

最新更新