.. title:: clang-tidy - modernize-use-uncaught-exceptions

modernize-use-uncaught-exceptions
====================================

This check will warn on calls to ``std::uncaught_exception`` and replace them
with calls to ``std::uncaught_exceptions``, since ``std::uncaught_exception``
was deprecated in C++17.

Below are a few examples of what kind of occurrences will be found and what
they will be replaced with.

.. code-block:: c++

  #define MACRO1 std::uncaught_exception
  #define MACRO2 std::uncaught_exception

  int uncaught_exception() {
    return 0;
  }

  int main() {
    int res;

    res = uncaught_exception();
    // No warning, since it is not the deprecated function from namespace std

    res = MACRO2();
    // Warning, but will not be replaced

    res = std::uncaught_exception();
    // Warning and replaced

    using std::uncaught_exception;
    // Warning and replaced

    res = uncaught_exception();
    // Warning and replaced
  }

After applying the fixes the code will look like the following:

.. code-block:: c++

  #define MACRO1 std::uncaught_exception
  #define MACRO2 std::uncaught_exception

  int uncaught_exception() {
    return 0;
  }

  int main() {
    int res;

    res = uncaught_exception();

    res = MACRO2();

    res = std::uncaught_exceptions();

    using std::uncaught_exceptions;

    res = uncaught_exceptions();
  }
