On Sunday, 11 November 2012 at 12:33:25 UTC, Manfred Nowak wrote:
a) Instantiability is decidable
Why does the compiler stop with the evaluation at that randomly
choosen and apparently hard coded value of 500 recursive
expansions?

You are right, it is just an arbitrary limit, but useful to give the user at least somewhat useful diagnostics instead of just hitting a stack overflow eventually.

b) Instantiability is not decidable
Why does the compiler even try to instantiate more than the
indeed needed type `Elem!0'?

The other types _are_ needed to be known (e.g. for TypeInfo generation, and generally because the fields are always typed internally). You might be confusing this with knowing the _size_ of Elem!(n + 1) when calculating the size of Elem!(n) due to the recent discussion, which is indeed not necessary.

David

Reply via email to