То, что я хочу сделать, довольно легко сделать с помощью C ++ 0x lambdas.Я просто хочу выяснить, как это сделать только с bind1st
и bind2nd
.
Мне нужно найти первый элемент i
в векторе v
, такой, что (i-1)/p1 == p2
где p1и p2 - предопределенные целые числа.
find_if(v.begin(), v.end(), ???)
Я не могу понять, как сформировать предикат с minus<int>
divides<int>
equal_to<int>
и bind2nd
.Похоже, мне нужна некоторая композиция функций
equal(div(minus(i, 1), p1), p2)
Возможно ли это?
Пожалуйста, не предлагайте обходных путей, таких как написание автономной унарной функции или структуры с operator()
.Я действительно интересуюсь механикой функторов в функционале наряду с bind1st
и bind2nd
.Это не для реального кода, просто интерес.Спасибо :)