在阅读序列时,我看到了这个语法。
这个双括号是做什么的?看起来像是某种形式的循环。它只适用于非类型的模板参数吗?它必须与参数的顺序相同吗?我们能向后迭代吗?跳过一个号码?
// pretty-print a tuple
template<class Ch, class Tr, class Tuple, std::size_t... Is>
void print_tuple_impl(std::basic_ostream<Ch,Tr>& os,
const Tuple& t,
std::index_sequence<Is...>)
{
((os << (Is == 0? "" : ", ") << std::get<Is>(t)), ...);
}发布于 2022-06-09 18:23:16
有关于这方面的文档:折叠表达
简而言之,在本例中,...意味着对包中的所有参数重复指定的运算符。因此,在本例中,它将被解压缩为由逗号分隔的表达式序列,用于Is的每个后续元素,如下所示:
(os << "" << std::get<0>(t)), (os << ", " << std::get<1>(t)), (os << ", " << std::get<2>(t)), (os << ", " << std::get<3>(t))https://stackoverflow.com/questions/72564805
复制相似问题