.. title:: clang-tidy - performance-move-const-arg

performance-move-const-arg
==========================

The check warns

- if ``std::move()`` is called with a constant argument,

- if ``std::move()`` is called with an argument of a trivially-copyable type,

- if the result of ``std::move()`` is passed as a const reference argument.

In all three cases, the check will suggest a fix that removes the
``std::move()``.

Here are examples of each of the three cases:

.. code-block:: c++

  const string s;
  return std::move(s);  // Warning: std::move of the const variable has no effect

  int x;
  return std::move(x);  // Warning: std::move of the variable of a trivially-copyable type has no effect

  void f(const string &s);
  string s;
  f(std::move(s));  // Warning: passing result of std::move as a const reference argument; no move will actually happen

Options
-------

.. option:: CheckTriviallyCopyableMove

   If non-zero, enables detection of trivially copyable types that do not
   have a move constructor. Default is non-zero.
