#include <iostream>
#include <initializer_list>
#include <vector>
auto const v = std::vector<std::initializer_list<int>>{ { 0, 1, 2 }, { 3, 4 } };
int main()
{
for (auto const& l : v)
for (auto const& i : l)
std::cout << i << " ";
}
Этот код выводит мусор, например: 13386064 0 -1305220240 32764 0
(под несколькими разными компиляторами).
Если я изменю v
на std::vector<std::vector<int>>
или переместу определение в main
, он печатает 0 1 2 3 4
, как и ожидалось.
Почему?