Как ограничить повышение :: объединить минимум двумя диапазонами - PullRequest
4 голосов
/ 28 июня 2019

Нахождение следующего как источника segfault просто стоило мне около 4 часов работы:

#include <boost/range/combine.hpp>
#include <boost/foreach.hpp>
#include <iostream>
#include <vector>
#include <list>

int main(int, const char*[])
{
    std::vector<int> v;
    std::list<char> l;
    for (int i = 0; i < 5; ++i)
    {
        v.push_back(i);
        l.push_back(static_cast<char>(i) + 'a');
    }

    v.push_back(5);

    int ti;
    char tc;
    BOOST_FOREACH(boost::tie(ti, tc), boost::combine(v, l))
    {
        std::cout << '(' << ti << ',' << tc << ')' << '\n';
    }

    return 0;
}

Если вы выполните этот пример, вы заметите, что объединение счастливо повторяется, пока у более длинного диапазона есть значения. Я не вижу этого в документации .

Есть ли способ ограничить итерацию более коротким из двух диапазонов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...