Конструкция, наиболее близкая к вложенным функциям, - это лямбда-код C ++ 11.
void SomeFunction(int x)
{
int var = 2;
auto lambda = [&] (int param) -> int { return var + param; };
printf("var + x = %d\n", lambda(x));
}
Ламды позволяют использовать переменные из внешней области видимости ([&] указывает на автоматический захват всех переменных извнешний объем по ссылке).Лямбда, которая не использует никаких переменных из внешней области видимости (use []), может быть преобразована в указатель функции того же типа и, таким образом, может быть передана в функции, принимающие указатель функции.