#include <iostream>
#include <functional>
struct int_adder {
typedef int first_argument_type;
typedef int second_argument_type;
typedef int result_type;
int operator()(int a, int b) const { return a + b; }
};
int main() {
std::cout << bind2nd(int_adder(), 3)(5) << '\n';
}