我正在阅读下面关于处理任意形式函数的代码,并对
initializer_list<int>{((get_arg<Tuple, I>(ds, t)), 0)...}
中的语法感到困惑,这似乎被视为 initializer_list<int>{(void, 0)...}
,似乎 initializer_list
只采用逗号分隔的参数,为什么元组参数有效吗?
template<typename Tuple, std::size_t... I>
Tuple FunctionHandler::get_args(DataStream & ds, std::index_sequence<I...>)
{
Tuple t;
initializer_list<int>{((get_arg<Tuple, I>(ds, t)), 0)...};
return t;
}
template<typename Tuple, std::size_t Id>
void FunctionHandler::get_arg(DataStream & ds, Tuple & t)
{
ds >> std::get<Id>(t);
}