Summary: Restrictive functionality for template instance
                    recursive expansion
           Product: D
           Version: 2.039
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD

--- Comment #0 from Igor Lesik <> 2010-01-31 14:30:04 PST ---
How to reproduce:
template static_factorial(int n)
    static if (n == 1)
        const static_factorial = 1;
        const static_factorial = n * static_factorial!(n-1);

void main()
    writefln("502!=%d", static_factorial!(502));

Error: template instance factorial.static_factorial!(2) recursive expansion

Max recursion depth 500 is hardcoded in template.c function
TemplateInstance::semantic() line 3738 if (++nest > 500). While 500 is
reasonable practical limit, it would be nice to be able to control it somehow,
with #pragma for example.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to