У меня есть функция A
, которая принимает предикатную функцию в качестве аргумента.
У меня есть другая функция B
, и она принимает char
и возвращает int
, и функцию C
, котораяпринимает int
и возвращает bool
.
Мой вопрос: как связать B
и C
, чтобы передать его в функцию A
.
Что-то вроде:
A(bindfunc(B,C))
Я знаю boost::bind
работает, но я ищу решение STL.
Например,
int count(vector<int> a, pred func); // A
//this functions counts all elements which satisfy a condition
int lastdigit(int x); // B
//this function outputs last digit(in decimal notation) of number x
bool isodd(int x); // C
//this function tells if number x is odd
// i want to find the count of all such numbers in a vector whose last digit is odd
// so i want something like
count(vector<int> a, bind(lastdigit, isodd))
Один плохой способ - создать избыточную функцию D
, которая явно выполняет операцию связывания.