llvm-project/clang-tools-extra/docs/clang-tidy/checks/performance-unnecessary-cop...

35 lines
1.1 KiB
ReStructuredText
Raw Normal View History

.. title:: clang-tidy - performance-unnecessary-copy-initialization
performance-unnecessary-copy-initialization
===========================================
Finds local variable declarations that are initialized using the copy
constructor of a non-trivially-copyable type but it would suffice to obtain a
const reference.
The check is only applied if it is safe to replace the copy by a const
reference. This is the case when the variable is const qualified or when it is
only used as a const, i.e. only const methods or operators are invoked on it, or
it is used as const reference or value argument in constructors or function
calls.
Example:
.. code-block:: c++
const string& constReference() {
}
void function() {
// The warning will suggest making this a const reference.
const string UnnecessaryCopy = constReference();
}
struct Foo {
const string& name() const;
}
void Function(const Foo& foo) {
// The warning will suggest making this a const reference.
string UnnecessaryCopy = foo.name();
UnnecessaryCopy.find("bar");
}