tidy - modernize-replace-disallow-copy-and-assign-macro — Extra Clang Tools 22.0.0git documentation (original) (raw)
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 theprivate access of the copy constructor and the assignment operator and delete the methods entirely.
When running this check on a code like this:
class Foo { private: DISALLOW_COPY_AND_ASSIGN(Foo); };
It will be transformed to this:
class Foo { private: Foo(const Foo &) = delete; const Foo &operator=(const Foo &) = delete; };
Limitations¶
- Notice that the migration example above leaves the
privateaccess specification untouched. You might want to run the checkmodernize-use-equals-deleteto get warnings for deleted functions in private sections.
Options¶
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