Если я хочу объявить внутри функцию, вложенную в другую, можно поступить примерно вот так:
void f()
{
auto g = [] (int x) { return x > 0; };
// use g somehow
...
}
Но правильно ли я понмиаю, что каждый раз, заходя в f, будет создан новый объект lambda_xxx и это теоретически должно снижать производительность?
Есть ли смысл заменить auto g на static auto g?
Может компилятор такие лямбды без захвата оптимизирует и превращает в свободные функции?
Или использовать лямбды без захвата — баловство и надо вынести g() из f()?