www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Template recursion exceeded

reply Michelle Long <HappyDance321 gmail.com> writes:
Basically

void foo(int k = 20)()
{
    static if (k <= 0 || k >= 100) return;
    foo!(k-1)();
}

Error		Error: template instance `foo!-280` recursive expansion		
Feb 26 2019
parent reply Nicholas Wilson <iamthewilsonator hotmail.com> writes:
On Wednesday, 27 February 2019 at 05:45:19 UTC, Michelle Long 
wrote:
 Basically

 void foo(int k = 20)()
 {
    static if (k <= 0 || k >= 100) return;
    foo!(k-1)();
 }

 Error		Error: template instance `foo!-280` recursive expansion		
Yep, that return is a dynamic return, not a static one.
    static if (k <= 0 || k >= 100) {} else:
    foo!(k-1)();
will work.
Feb 26 2019
parent Michelle Long <HappyDance321 gmail.com> writes:
On Wednesday, 27 February 2019 at 06:56:59 UTC, Nicholas Wilson 
wrote:
 On Wednesday, 27 February 2019 at 05:45:19 UTC, Michelle Long 
 wrote:
 Basically

 void foo(int k = 20)()
 {
    static if (k <= 0 || k >= 100) return;
    foo!(k-1)();
 }

 Error		Error: template instance `foo!-280` recursive 
 expansion		
Yep, that return is a dynamic return, not a static one.
    static if (k <= 0 || k >= 100) {} else:
    foo!(k-1)();
will work.
Right, I forgot ;/ At first I wasn't using a static if then threw it in their.
Feb 26 2019