3

我目前正在尝试增加参数包中的每个值,该参数包中充满了某种未知类型的 std::vector::iterators。我目前正在努力弄清楚...语法是如何工作的。我本来想增加每个值,++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 ...);
    }
}
4

1 回答 1

3

替换这个:

++input_starts ...

有了这个:

(++input_starts, ...)

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

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

于 2020-10-17T01:33:18.040 回答