Wow, ich bin überrascht, dass noch niemand Ja gesagt hat! Kostenlose Funktionen können nicht geschachtelt werden, aber Funktoren und Klassen im Allgemeinen können.
void fun_a();
//int fun_b();
...
main(){
...
fun_a();
...
struct { int operator()() {
...
} } fun_b;
int q = fun_b();
...
}
Sie können dem Funktor einen Konstruktor geben und Verweise auf lokale Variablen übergeben, um ihn mit dem lokalen Bereich zu verbinden. Andernfalls kann er auf andere lokale Typen und statische Variablen zugreifen. Lokale Klassen können jedoch keine Argumente für Vorlagen sein.