auto addition = [] (double a, double b) { return a + b; };

auto substruction = [] (double a, double b) { return a - b; };

auto divide = [] (double a, double b) { return a / b; };

auto multiplie = [] (double a, double b) { return a * b; };

typedef std::function<double (double, double)> DoubleFunc;

int main()
{
    std::vector<DoubleFunc> funcVector;

    funcVector.push_back(addition);
    funcVector.push_back(substruction);
    funcVector.push_back(multiplie);
    funcVector.push_back(divide);

    std::for_each(funcVector.begin(), funcVector.end(), []
    (DoubleFunc func)
    {
        std::cout << func(3.14159, 100500) << std::endl;
    });

    system("pause");
    return 0;
}