以下基于范围的for循环内幕后面的列表是什么?

Ham*_*a.S 65 c++ for-loop

我正在学习C++,我看到了一个for像这样的基于范围的循环:

for (int i : {1,2,3,4,5})
    std::cout << i << ' ';
Run Code Online (Sandbox Code Playgroud)

{1,2,3,4,5}幕后for循环的临时性是什么?

tas*_*oor 76

这里的对象是一个实例std::initializer_list<int>.从参考(强调我的):

在以下情况下自动构造std :: initializer_list对象:

braced-init-list用于列表初始化对象,其中相应的构造函数接受std :: initializer_list参数

braced-init-list用作赋值的右操作数或函数调用参数,相应的赋值运算符/函数接受std :: initializer_list参数

braced-init-list绑定到auto,包括在ranged for循环中

  • 支撑的初始化列表不是一个对象,但我想在这种情况下假装它是好的. (2认同)

Jar*_*d42 17

幕后for循环中的临时{1,2,3,4,5}是什么?

一个 std::initializer_list<int>

  • 可以从该链接添加一些文本. (5认同)