.. title:: clang-tidy - cppcoreguidelines-special-member-functions

cppcoreguidelines-special-member-functions
==========================================

The check finds classes where some but not all of the special member functions
are defined.

By default the compiler defines a copy constructor, copy assignment operator,
move constructor, move assignment operator and destructor. The default can be
suppressed by explicit user-definitions. The relationship between which
functions will be suppressed by definitions of other functions is complicated
and it is advised that all five are defaulted or explicitly defined.

Note that defining a function with ``= delete`` is considered to be a
definition.

This rule is part of the "Constructors, assignments, and destructors" profile of the C++ Core
Guidelines, corresponding to rule C.21. See

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all.

Options
-------

.. option:: AllowSoleDefaultDtor

   When set to `1` (default is `0`), this check doesn't flag classes with a sole, explicitly
   defaulted destructor. An example for such a class is:
   
   .. code-block:: c++
   
     struct A {
       virtual ~A() = default;
     };
   
.. option:: AllowMissingMoveFunctions

   When set to `1` (default is `0`), this check doesn't flag classes which define no move
   operations at all. It still flags classes which define only one of either
   move constructor or move assignment operator. With this option enabled, the following class won't be flagged:
   
   .. code-block:: c++
   
     struct A {
       A(const A&);
       A& operator=(const A&);
       ~A();
     }
