递增参数包中的每个值
Incrementing every value in a parameter pack
我目前正在尝试递增充满 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 ...);
}
}
替换为:
++input_starts ...
有了这个:
(++input_starts, ...)
那是 C++17 fold expression(您的用例类似于该页面上的 push_back_vec()
示例)。
我目前正在尝试递增充满 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 ...);
}
}
替换为:
++input_starts ...
有了这个:
(++input_starts, ...)
那是 C++17 fold expression(您的用例类似于该页面上的 push_back_vec()
示例)。