.. title:: clang-tidy - bugprone-unused-return-value

bugprone-unused-return-value
============================

Warns on unused function return values. The checked functions can be configured.

Options
-------

.. option:: CheckedFunctions

   Semicolon-separated list of functions to check. The function is checked if
   the name and scope matches, with any arguments.
   By default the following functions are checked:
   ``std::async, std::launder, std::remove, std::remove_if, std::unique,
   std::unique_ptr::release, std::basic_string::empty, std::vector::empty,
   std::back_inserter, std::distance, std::find, std::find_if, std::inserter,
   std::lower_bound, std::make_pair, std::map::count, std::map::find,
   std::map::lower_bound, std::multimap::equal_range,
   std::multimap::upper_bound, std::set::count, std::set::find, std::setfill,
   std::setprecision, std::setw, std::upper_bound, std::vector::at,
   bsearch, ferror, feof, isalnum, isalpha, isblank, iscntrl, isdigit, isgraph,
   islower, isprint, ispunct, isspace, isupper, iswalnum, iswprint, iswspace,
   isxdigit, memchr, memcmp, strcmp, strcoll, strncmp, strpbrk, strrchr,
   strspn, strstr, wcscmp, access, bind, connect, difftime, dlsym, fnmatch,
   getaddrinfo, getopt, htonl, htons, iconv_open, inet_addr, isascii, isatty,
   mmap, newlocale, openat, pathconf, pthread_equal, pthread_getspecific,
   pthread_mutex_trylock, readdir, readlink, recvmsg, regexec, scandir,
   semget, setjmp, shm_open, shmget, sigismember, strcasecmp, strsignal,
   ttyname``

   - ``std::async()``. Not using the return value makes the call synchronous.
   - ``std::launder()``. Not using the return value usually means that the
     function interface was misunderstood by the programmer. Only the returned
     pointer is "laundered", not the argument.
   - ``std::remove()``, ``std::remove_if()`` and ``std::unique()``. The returned
     iterator indicates the boundary between elements to keep and elements to be
     removed. Not using the return value means that the information about which
     elements to remove is lost.
   - ``std::unique_ptr::release()``. Not using the return value can lead to
     resource leaks if the same pointer isn't stored anywhere else. Often,
     ignoring the ``release()`` return value indicates that the programmer
     confused the function with ``reset()``.
   - ``std::basic_string::empty()`` and ``std::vector::empty()``. Not using the
     return value often indicates that the programmer confused the function with
     ``clear()``.

`cert-err33-c <cert-err33-c.html>`_ is an alias of this check that checks a
fixed and large set of standard library functions.
