Здравствуйте, rean, Вы писали:
R>Да вообще не надо такое писать. Разве что ради стеба.
Этот пример, на самом деле состоит из двух частей. Первая часть — библиотечная — она пишется один раз, тестируется и спокойно лежит и ждет своего часа. Это как разумная альтернатива тому, чтоб встраивать такую возможность в язык, как это предлагает ТС. И когда она понадобится, мои программы будут получаться вот такими:
for (auto&& entry : make_zip_range(a, b, c))
{
std::cout << std::get<0>(entry) << ", " << std::get<1>(entry) << ", " << std::get<2>(entry) << std::endl;
}
а твои вот такими:
http://rsdn.org/forum/cpp/7069883.1Автор: rean
Дата: 02.03.18
auto ia = a.begin();
auto ib = b.begin();
auto ic = c.begin();
for (;;) {
bool in_a = ia != a.end();
bool in_b = ib != b.end();
bool in_c = ic != c.end();
if (!(in_a || in_b || in_c)) break;
if (in_a)
std::cout << *ia;
else
std::cout << "-";
if (in_b)
std::cout << ", " << (*ib).c_str();
else
std::cout << ", -";
if (in_c)
std::cout << ", " << *ic;
else
std::cout << ", -";
std::cout << std::endl;
if (in_a) ++ia;
if (in_b) ++ib;
if (in_c) ++ic;
};
Если тебе твоя программа нравится больше, пожалуйста, я тебе ничего не навязываю. Мне же, извини, это напоминает рецепт какого-то борща.
R>Оно скорей всего у меня даже не откомпилируется на VC++, а boost так это еще + 300 мегабайт в проект.
Спокойно компилируется, можешь проверить.