title: Is it code smell to use std::move on all class value-copies "just in case"?
body: <p>I have a function that gets a &quot;Config&quot; struct, which at the moment is simply a struct that contains an array</p>
  <pre><code>class ShmConfig {
  public:
     std::int64_t shellShmSize[ShellId_Count];
  };
  </code></pre>
  <p>And I pass it on to another function in the function with <code>std::move</code>, because I want all code places that copy it be agnostic to the fact that it can efficiently be copied.</p>
  <pre><code>m_allocator.setup(std::move(config));
  </code></pre>
  <p>If later it can be more efficient to move it (maybe because I add an <code>std::string</code> to it), it will automatically be become more efficient. But <code>clang-tidy</code> advises against it</p>
  <blockquote>
  <p><code>std::move</code> of the variable '<code>config</code>' of the trivially-copyable type '<code>ShmConfig</code>' has no effect; remove <code>std::move()</code></p>
  </blockquote>
  <p>I don't understand why this is desirable. Is there any disadvantage to wrapping it with <code>move</code>? Are these advices to be followed only if one runs clang-tidy regularly, so that one can spot cases of where <code>std::move</code> will make sense later on, upon data member additions?</p>