.. title:: clang-tidy - modernize-use-default-member-init

modernize-use-default-member-init
=================================

This check converts a default constructor's member initializers into the new
default member initializers in C++11. Other member initializers that match the
default member initializer are removed. This can reduce repeated code or allow
use of '= default'.

.. code-block:: c++

  struct A {
    A() : i(5), j(10.0) {}
    A(int i) : i(i), j(10.0) {}
    int i;
    double j;
  };

  // becomes

  struct A {
    A() {}
    A(int i) : i(i) {}
    int i{5};
    double j{10.0};
  };

.. note::
  Only converts member initializers for built-in types, enums, and pointers.
  The `readability-redundant-member-init` check will remove redundant member
  initializers for classes.

Options
-------

.. option:: UseAssignment

   If this option is set to non-zero (default is `0`), the check will initialise
   members with an assignment. For example:

.. code-block:: c++

  struct A {
    A() {}
    A(int i) : i(i) {}
    int i = 5;
    double j = 10.0;
  };

.. option:: IgnoreMacros

   If this option is set to non-zero (default is `1`), the check will not warn
   about members declared inside macros.
