On 09/26/2018 03:46 PM, Jonathan wrote:
I can't see how the current behavior is at all better or to be preferred
unless it is faster to compile? What is the reason for it being how it is?
void outerFunction()
{
func();
auto lock = acquireLock();
void nested()
{
}
}
Inside `nested`, can you refer to `lock`? It's in lexical scope, so yes.
It hasn't been initialized yet. What value should it have? Presumably
its standard uninitialized value.
This is likely to cause a lot of confusion.
The standard ways of dealing with this:
* Reorder the declarations.
* Make the functions non-nested.
* Get rid of mutual recursion.
* Use a delegate.
* Do a method-to-method-object refactoring.