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

Reply via email to