Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ boost _ Как работать с boost::mpl::copy_if?

Автор: panter_dsd 11.7.2011, 14:19

Убил уже не один час в попытках разобраться с boost::mpl::copy_if. До этого с бустом не работал, сейчас пытаюсь его изучить, но пока безрезультатно. Объясните, плиз, на примере работу с этой функцией, а там, надеюсь, уже полегче пойдет освоение.

Входные данные:
1. ProductVersion - класс.
2. typedef std::set <ProductVersion, ProductVersionListComparator> ProductVersionList - контейнер.
3. Функция, в которую передается ProductVersion и она должна вернуть ProductVersionList со всеми элементами, большими, чем этот.

Вот текущий вариант

ProductVersionList AbstractUpdateConfig::availableUpdates (const ProductVersion &currentProductVersion_) const
{
    ProductVersionList l;

    if (productVersionList_.empty () || currentProductVersion_.empty ()) {
        return l;
    }

    const ProductVersionList::const_iterator &it = productVersionList_.lower_bound (currentProductVersion_);

    if (it != productVersionList_.begin ()) {
        l.insert (productVersionList_.begin (), it);
    }

    return l;
}

А как его через copy_if провернуть?

Автор: Iron Bug 11.7.2011, 18:44

зачем тебе MPL? он работает с последовательностями типов. это метапрограммирование, это операции с массивами типов. я с трудом себе могу представить, где такое может понадобиться. разве что в каких-нибудь самодельных компиляторах, и то вряд ли.
а у тебя обычные STL контейнеры и вполне нормальное решение задачи. чем оно не устраивает?
можешь покопать boost::algorithm там много всего полезного, и гораздо менее замороченного, чем MPL.

Автор: panter_dsd 11.7.2011, 20:20

Хм. Значит я полез совсем не туда.... :)
Спасибо за пинок в нужную сторону.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)