On Mon, Aug 02, 2021 at 02:31:45PM +0000, Rekel via Digitalmars-d-learn wrote: > I recently found one can return function calls to void functions, > though I don't remember any documentation mentioning this even though > it doesn't seem trivial.
This is intentional, in order to make it easier to write generic code without always having to special-case functions that don't return anything. E.g.: auto myWrapper(alias func, Args...)(Args args) { // Don't have to special case void return. return func(args); } int hooray(int i) { return i+1; } void boo(int j) { return; } int z = myWrapper!hooray(1); myWrapper!boo(2); Otherwise you'd have to litter your code with redundant special cases: auto myWrapper(alias func, Args...)(Args args) { static if (is(ReturnType!func == void)) func(args); else return func(args); // same thing but different } Allowing `return func(args)` for void functions eliminates the need for such special cases. T -- "640K ought to be enough" -- Bill G. (allegedly), 1984. "The Internet is not a primary goal for PC usage" -- Bill G., 1995. "Linux has no impact on Microsoft's strategy" -- Bill G., 1999.