The other day there was a request for a compile error if you do:
int foo(void) { }
and the answer was "the standard says that this is legal -- after all,
you can say 'foo();' so the return value isn't used and it doesn't
matter that it's missing".
That makes sense.
So how about:
int foo (void) { }
...
j = foo ();
This clearly *is* wrong. The compiler may not always be able to
tell. If it can -- for example, if this is inlined code where the
function definition is available at the time the call is compiled --
it sure would be helpful to have an error message here.
I just helped a colleague track one of these down after he had already
spent a day or three looking. Bugs like this can be hard to spot.
Especially if, as in this case, you were dealing with a class wrapped
around another class, and the wrappers all look the same, and those
wrappers are where the problem lies.
paul