Search code examples
c++cvoid

Why cast unused return values to void?


int fn();

void whatever()
{
    (void) fn();
}

Is there any reason for casting an unused return value to void, or am I right in thinking it's a complete waste of time?


Solution

  • David's answer pretty much covers the motivation for this, to explicitly show other "developers" that you know this function returns but you're explicitly ignoring it.

    This is a way to ensure that where necessary error codes are always handled.

    I think for C++ this is probably the only place that I prefer to use C-style casts too, since using the full static cast notation just feels like overkill here. Finally, if you're reviewing a coding standard or writing one, then it's also a good idea to explicitly state that calls to overloaded operators (not using function call notation) should be exempt from this too:

    class A {};
    A operator+(A const &, A const &);
    
    int main () {
      A a;
      a + a;                 // Not a problem
      (void)operator+(a,a);  // Using function call notation - so add the cast.