Есть ли что-нибудь для композиции функций в ?

То, что я хочу сделать, довольно легко сделать с помощью лямбда-выражений C ++ 0x. Я просто хочу выяснить, как это сделать с помощью bind1st и bind2nd .

Мне нужно найти первый элемент i в векторе ] v , так что (i-1) / p1 == p2 , где p1 и p2 - предопределенные целые числа.

find_if(v.begin(), v.end(), ???)

Я не могу понять, как сформировать предикат с помощью минус делит equal_to и bind2nd . Похоже, мне нужна некоторая композиция функций

equal(div(minus(i, 1), p1), p2)

Возможно ли?

Пожалуйста, не предлагайте обходные пути, такие как написание автономной унарной функции или структуры с operator () . Меня действительно интересует механика функторов в функционале наряду с bind1st и bind2nd . Это не для реального кода, просто для интереса. Спасибо :)

5
задан Armen Tsirunyan 19 July 2011 в 19:27
поделиться