Вопрос в том, в чем разница между обычной функцией и упакованной лямбда?
Нормальная функция - это обычная функция, и то, что вы называете «упакованной лямбда», на самом деле является объектом функции.1005 *
Кстати, а зачем использовать std::function
?Вы могли бы просто написать это:
auto f = [](double x) { return static_cast <int> (x*x); };
//call
int result = f(100.0);
Кроме того, я опустил тип возвращаемого значения, так как он неявно известен компилятору из выражения возврата.Не нужно писать -> int
в лямбда-выражении.