Информация об изменениях

Сообщение C++ идея для стандарта. от 02.03.2018 10:35

Изменено 02.03.2018 10:36 pkl

C++ идея для стандарта.
Есть 3 контейнера: a, b, c. Хочу запустить 1 range-цикл по ним всем одновременно:

for( auto i1 : a, auto i2 : b, auto i3 : c) {
    
}


На каждой итерации i1, i2, i3 имеет очередное значение из соответствующего контейнера.
Цикл помирает как только исчерпается самый мелкий контейнер.

Пример:
std::vector<int> a = {1, 2, 3};
std::vector<std::string> b= {"hello", "world", "foo", "bar"};
std::vector<int> c = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

// Loop will stop after 3 iterations, because 'a' have minumal size = 3.
for ( auto i1 : a, auto i2 : b, auto i3 : c ) {
    std::cout << i1 << ", " << i2 << ", " << i3 << "\n";
}


Output:
1, hello, 9
2, world, 8
3, foo, 7


Жопа ли это? Я тупой наркоман? Можно ли это сделать уже щас без вундервафлинга?
C++ идея для стандарта.
Есть 3 контейнера: a, b, c. Хочу запустить 1 range-цикл по ним всем одновременно:

for( auto i1 : a, auto i2 : b, auto i3 : c) {
    
}


На каждой итерации i1, i2, i3 имеет очередное значение из соответствующего контейнера.
Цикл помирает как только исчерпается самый мелкий контейнер.

Пример:
std::vector<int> a = {1, 2, 3};
std::vector<std::string> b = {"hello", "world", "foo", "bar"};
std::vector<int> c = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

// Loop will stop after 3 iterations, because 'a' have minumal size = 3.
for ( auto i1 : a, auto i2 : b, auto i3 : c ) {
    std::cout << i1 << ", " << i2 << ", " << i3 << "\n";
}


Output:
1, hello, 9
2, world, 8
3, foo, 7


Жопа ли это? Я тупой наркоман? Можно ли это сделать уже щас без вундервафлинга?