Я хочу run
позвонить c.drive()
:
#include <functional>
using namespace std;
struct Car {
void drive() { }
};
template <typename Function>
void run(Function f) {
f();
}
int main() {
Car c;
run(bind1st(mem_fun(&Car::drive), &c));
return 0;
}
Это не компилируется и сообщения об ошибках мне не помогают:
при f ():
нет совпадения для вызова '(std :: binder1st>) () '
при вызове для запуска:
нет типа с именем' first_argument_type 'в' классе std :: mem_fun_t'
нет типа с именем' second_argument_type 'в' классе std :: mem_fun_t'
Не буст, пожалуйста.
Обновление: , даже если проблема решена, я был бы очень рад увидеть TR1 / C ++0x решений!