为什么我不能在基于范围的 for 循环中使用此 'void' 类型?

Why can't I use this 'void' type in a range based for loop?

for(auto i: {{1,2,3}, {4,5,6}, {7,8,9}}){
    /* loop body */
}

我知道我有其他方法来完成我的工作。但我只是想知道为什么我们不能在这个循环中使用这种类型的列表。

给我这个错误:

cannot use type 'void' as a range

{..} 没有类型,因此内部类型所需的推导有问题,您可以通过显式提供类型来提供帮助:(我在这里使用了 C++17 的 CTAD,然后添加 <int>)

for (auto i: {std::initializer_list{1,2,3}, {4,5,6}, {7,8,9}}){
    /* loop body */
}

Demo