Proposal: "void f() { return 7; }" should be illegal

grauzone none at example.net
Tue Sep 29 16:39:43 PDT 2009


Denis Koroskin wrote:
> Unfortunately, you still have to special-case void type in a lot of 
> cases. Here are just 2 examples:

And that's why there were ideas to allow declaring void variables.
IMHO these void variables should allow all common operations on normal 
variables (assignment, passing as function parameter, taking address, 
dereferencing, void.init), and the compilation of those should simply 
result in no code.

> RetType doSomething(Args, RetType)(Args args, RetType retType)
> {
>     RetType result = callSomeDelegate(args);    // doesn't work for 'void'
>     addLogEntry("bla-bla-bla");
>     return result;
> }
> 
> class Test(T)
> {
>     T foo(T t) { ... }
>     T bar() { ... }
> 
>     T test()
>     {
>         return bar(foo()); // works for all types but 'void'
>     }
> }



More information about the Digitalmars-d mailing list