Hamza.S
Hamza.S

Reputation: 1377

What is the following list of behind the scenes inside the range-based for loop?

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

Answers (2)

Jarod42
Jarod42

Reputation: 217283

What is the temporary {1,2,3,4,5} in the for loop behind the scenes?

a std::initializer_list<int>

Upvotes: 18

taskinoor
taskinoor

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

Related Questions