Reputation: 1377
I am studying C++ and I saw a range-based for
loop like this:
for (int i : {1,2,3,4,5})
std::cout << i << ' ';
What is the temporary {1,2,3,4,5}
in the for loop behind the scenes?
Upvotes: 66
Views: 3481
Reputation: 217283
What is the temporary {1,2,3,4,5} in the for loop behind the scenes?
Upvotes: 18
Reputation: 46027
The object here is an instance of std::initializer_list<int>
. From the reference (emphasis mine):
A std::initializer_list object is automatically constructed when:
a braced-init-list is used to list-initialize an object, where the corresponding constructor accepts an std::initializer_list parameter
a braced-init-list is used as the right operand of assignment or as a function call argument, and the corresponding assignment operator/function accepts an std::initializer_list parameter
a braced-init-list is bound to auto, including in a ranged for loop
Upvotes: 77