digitalmars.D - Forward reference not working in nested functions
- H. S. Teoh (15/15) Dec 12 2012 Is this a known bug or deliberate limitation?
- Jacob Carlborg (5/17) Dec 12 2012 It's basically the same thing as you need to declare variables in
- Timon Gehr (2/15) Dec 12 2012 Both.
- Timon Gehr (15/36) Dec 12 2012 (A silly workaround is the following, but I do not know if this has been...
- bearophile (5/7) Dec 12 2012 The workaround I use was found by Don, is to the define an inner
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 -- Heads I win, tails you lose.
Dec 12 2012
On 2012-12-12 19:03, 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(); }It's basically the same thing as you need to declare variables in correct order in a function. -- /Jacob Carlborg
Dec 12 2012
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(); } TBoth.
Dec 12 2012
On 12/12/2012 09:03 PM, Timon Gehr wrote:On 12/12/2012 07:03 PM, H. S. Teoh wrote:(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(); } )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(); } TBoth.
Dec 12 2012
Timon Gehr:(A silly workaround is the following, but I do not know if this has been documented since it has been discovered:The workaround I use was found by Don, is to the define an inner static struct with static methods. Bye, bearophile
Dec 12 2012