.. title:: clang-tidy - readability-redundant-member-init

readability-redundant-member-init
=================================

Finds member initializations that are unnecessary because the same default
constructor would be called if they were not present.

Example
-------

.. code-block:: c++

  // Explicitly initializing the member s is unnecessary.
  class Foo {
  public:
    Foo() : s() {}

  private:
    std::string s;
  };

Options
-------

.. option:: IgnoreBaseInCopyConstructors

    Default is `false`.

    When `true`, the check will ignore unnecessary base class initializations
    within copy constructors, since some compilers issue warnings/errors when
    base classes are not explicitly initialized in copy constructors. For example,
    ``gcc`` with ``-Wextra`` or ``-Werror=extra`` issues warning or error
    ``base class 'Bar' should be explicitly initialized in the copy constructor``
    if ``Bar()`` were removed in the following example:

.. code-block:: c++

  // Explicitly initializing member s and base class Bar is unnecessary.
  struct Foo : public Bar {
    // Remove s() below. If IgnoreBaseInCopyConstructors!=0, keep Bar().
    Foo(const Foo& foo) : Bar(), s() {}
    std::string s;
  };

