Is returning void functions inside void functions a feature or an artifact?

Patrick Schluter Patrick.Schluter at bbox.fr
Tue Aug 3 07:23:34 UTC 2021


On Monday, 2 August 2021 at 14:46:36 UTC, jfondren wrote:
> On Monday, 2 August 2021 at 14:31:45 UTC, Rekel wrote:
>> [...]
>
> I don't know where you can find this in the docs, but what 
> doesn't seem trivial about it? The type of the expression 
> `print()` is void. That's the type that `doSomething` returns. 
> That's the type of the expression that `doSomething` does 
> return and the type of the expression following a `return` 
> keyword in `doSomething`. Rather than a rule expressly 
> permitting this, I would expect to find to either nothing (it's 
> permitted because it makes sense) or a rule against it (it's 
> expressly forbidden because it has to be to not work, because 
> it makes sense).
>
> C, C++, Rust, and Zig are all fine with this. Nim doesn't like 
> it.

Wow. Just discovered that C accepts it. After 35 years of daily 
use of C, there are still things to discover.


More information about the Digitalmars-d-learn mailing list