Убил уже не один час в попытках разобраться с boost::mpl::copy_if. До этого с бустом не работал, сейчас пытаюсь его изучить, но пока безрезультатно. Объясните, плиз, на примере работу с этой функцией, а там, надеюсь, уже полегче пойдет освоение.
Входные данные:
1. ProductVersion - класс.
2. typedef std::set <ProductVersion, ProductVersionListComparator> ProductVersionList - контейнер.
3. Функция, в которую передается ProductVersion и она должна вернуть ProductVersionList со всеми элементами, большими, чем этот.
Вот текущий вариант
ProductVersionList AbstractUpdateConfig::availableUpdates (const ProductVersion ¤tProductVersion_) 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;
}
зачем тебе MPL? он работает с последовательностями типов. это метапрограммирование, это операции с массивами типов. я с трудом себе могу представить, где такое может понадобиться. разве что в каких-нибудь самодельных компиляторах, и то вряд ли.
а у тебя обычные STL контейнеры и вполне нормальное решение задачи. чем оно не устраивает?
можешь покопать boost::algorithm там много всего полезного, и гораздо менее замороченного, чем MPL.
Хм. Значит я полез совсем не туда....
Спасибо за пинок в нужную сторону.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)