CTFE and return statement from delegate

Nick Treleaven nick at geany.org
Thu Jul 3 15:34:00 UTC 2025


On Monday, 30 June 2025 at 14:30:49 UTC, Manfred Nowak wrote:
> On Sunday, 29 June 2025 at 13:06:38 UTC, Rajesh wrote:
>
> [...]
>
> ```d
>> struct Problem {
>>     this(int val) {
>>         foreach (int number; myType)
>>             return;
> ```
>
> [...]
>> Is there a restriction [...]
>
> Yes.
>
> 'this' is not allowed to have a 'return' (15.13.0.2) ...
> and to exit a 'foreach'-loop needs a 'break' (12.11.0.6).
>
> So the compiler should not compile that program even for 
> runtime.

`return` can be used to exit `foreach` (as can `goto` or 
`throw`), and `return;` can be used in a constructor. The latter 
I'll look at clarifying in the spec. The issue from this thread 
is just a limitation of CTFE.


More information about the Digitalmars-d-learn mailing list