.. title:: clang-tidy - modernize-replace-disallow-copy-and-assign-macro modernize-replace-disallow-copy-and-assign-macro ================================================ Finds macro expansions of ``DISALLOW_COPY_AND_ASSIGN(Type)`` and replaces them with a deleted copy constructor and a deleted assignment operator. Before the ``delete`` keyword was introduced in C++11 it was common practice to declare a copy constructor and an assignment operator as private members. This effectively makes them unusable to the public API of a class. With the advent of the ``delete`` keyword in C++11 we can abandon the ``private`` access of the copy constructor and the assignment operator and delete the methods entirely. When running this check on a code like this: .. code-block:: c++ class Foo { private: DISALLOW_COPY_AND_ASSIGN(Foo); }; It will be transformed to this: .. code-block:: c++ class Foo { private: Foo(const Foo &) = delete; const Foo &operator=(const Foo &) = delete; }; Known Limitations ----------------- * Notice that the migration example above leaves the ``private`` access specification untouched. You might want to run the check :doc:`modernize-use-equals-delete <../modernize/use-equals-delete>` to get warnings for deleted functions in private sections. Options ------- .. option:: MacroName A string specifying the macro name whose expansion will be replaced. Default is `DISALLOW_COPY_AND_ASSIGN`. See: https://en.cppreference.com/w/cpp/language/function#Deleted_functions