Какой тип авто используется для контейнеров?

Я могу добиться идентичного вывода, используя различные контейнеры в С++. Например.,

    std::array<int, 5> v = {1,2,3,4,5};
    for(auto i : v)
        std::cout << i << ", ";

или

    std::vector<int> v = {1,2,3,4,5};

или

    int v[] = {1,2,3,4,5};

и т.д.,

Итак, какой контейнер использует auto здесь?

    auto v = {1,2,3,4,5};
    for(auto i : v)
        std::cout << i << ", ";

Ответ 1

std::initializer_list<int>


Не так сложно проверить для себя, вы всегда можете decltype(v), а затем сравнить его с указанным типом списка.

У этого есть еще одно приятное свойство, которое иногда очень полезно и может вас заинтересовать:

for (auto i : {1,2,3,4,5})
    std::cout << i << ", ";

Это можно сделать, потому что initializer_list поддерживает интерфейс стандартного диапазона.