Although C++ does not allow nested function declaration, you can simulate it using a structure with a static function:
void outer(){ static int v1 = 5; int v2 = 5; struct thru { static void inner() { std::cout << v1 << std::endl; //std::cout << v2 << std::endl; } }; thru::inner();}
The inner() function will not have access to local variables of outer() (the line that is commented out in the code above will cause an error, for example); however, it will be able to access the local static variable v1 in outer().