Forward reference not working in nested functions

Timon Gehr timon.gehr at gmx.ch
Wed Dec 12 12:07:33 PST 2012


On 12/12/2012 09:03 PM, Timon Gehr wrote:
> On 12/12/2012 07:03 PM, H. S. Teoh wrote:
>> Is this a known bug or deliberate limitation?
>>
>>     void func(T)(T data) {
>>         void subfunc1() {
>>             process(data);
>>             if (recurse) subfunc2(); // Error: subfunc2 undefined
>>         }
>>
>>         void subfunc2() {
>>             process(data);
>>             if (recurse) subfunc1(); // Error: subfunc1 undefined
>>         }
>>
>>         subfunc1();
>>     }
>>
>>
>> T
>>
>
> Both.

(A silly workaround is the following, but I do not know if this has been 
documented since it has been discovered:


     void func(T)(T data) {
         void subfunc1()() {
             process(data);
             if (recurse) subfunc2(); // Ok.
         }

         void subfunc2() {
             process(data);
             if (recurse) subfunc1(); // Ok.
         }

         subfunc1();
     }
)


More information about the Digitalmars-d mailing list