Update clang-tidy documentation.
Summary: Improve modernize-use-auto documentation (https://llvm.org/bugs/show_bug.cgi?id=24962). Add documentation for modernize-make-unique. Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D13346 git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@249017 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
914d6af0ea
Коммит
d16c266727
|
@ -42,6 +42,7 @@ List of clang-tidy Checks
|
|||
misc-unused-parameters
|
||||
misc-unused-raii
|
||||
modernize-loop-convert
|
||||
modernize-make-unique
|
||||
modernize-pass-by-value
|
||||
modernize-replace-auto-ptr
|
||||
modernize-shrink-to-fit
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
modernize-make-unique
|
||||
=====================
|
||||
|
||||
This check finds the creation of ``std::unique_ptr`` objects by explicitly
|
||||
calling the constructor and a ``new`` expression, and replaces it with a call
|
||||
to ``std::make_unique``, introduced in C++14.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
auto my_ptr = std::unique_ptr<MyPair>(new MyPair(1, 2));
|
||||
|
||||
// becomes
|
||||
|
||||
auto my_ptr = std::make_unique<MyPair>(1, 2);
|
||||
|
|
@ -108,6 +108,39 @@ conditions are satisfied:
|
|||
list. Otherwise, use of ``auto`` would cause the type of the variable to be
|
||||
deduced as``std::initializer_list``.
|
||||
|
||||
New expressions
|
||||
---------------
|
||||
|
||||
Frequently, when a pointer is declared and initialized with ``new``, the
|
||||
pointee type has to be written twice: in the declaration type and in the
|
||||
``new`` expression. In this cases, the declaration type can be replaced with
|
||||
``auto`` improving readability and maintainability.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
TypeName *my_pointer = new TypeName(my_param);
|
||||
|
||||
// becomes
|
||||
|
||||
auto my_pointer = new TypeName(my_param);
|
||||
|
||||
The check will also replace the declaration type in multiple declarations, if
|
||||
the following conditions are satisfied:
|
||||
|
||||
* All declared variables have the same type (i.e. all of them are pointers to
|
||||
the same type).
|
||||
* All declared variables are initialized with a ``new`` expression.
|
||||
* The types of all the new expressions are the same than the pointee of the
|
||||
declaration type.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
TypeName *my_first_pointer = new TypeName, *my_second_pointer = new TypeName;
|
||||
|
||||
// becomes
|
||||
|
||||
auto my_first_pointer = new TypeName, my_second_pointer = new TypeName;
|
||||
|
||||
Known Limitations
|
||||
-----------------
|
||||
* If the initializer is an explicit conversion constructor, the check will not
|
||||
|
|
Загрузка…
Ссылка в новой задаче