关于std::initializer_list的语法问题:std::initializer_list<int>{(foo<T>,0)...}

问题描述 投票:0回答:0

我正在阅读下面关于处理任意形式函数的代码,并对

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);
}
c++ std initializer-list
© www.soinside.com 2019 - 2024. All rights reserved.