#include #include #include #include #include using namespace boost::lambda; double exp1(double _d) { return exp(_d); } template std::complex exp1(const std::complex &_r) { return std::exp(_r); } template struct EXP { typedef X result_type; X operator()(const X &_r) const { return exp(_r); } }; int main(int argc, char **argv) { std::cout << (bind(EXP(), _1*0.5) + 2.0*bind(EXP(), _1))(atof(argv[1])) << "\n"; std::cout << exp(0.5*atof(argv[1])) + 2.0*exp(atof(argv[1])) << "\n"; std::cout << (bind(exp1, _1*0.5) + 2.0*bind(exp1, _1))(atof(argv[1])) << "\n"; //std::cout << (bind(exp1, _1*0.5) + 2.0*bind(exp1, _1))(std::complex(atof(argv[1]))) << "\n"; std::cout << (bind(EXP >(), _1*0.5) + 2.0*bind(EXP >(), _1))(std::complex(atof(argv[1]), 0)) << "\n"; return 0; }