title: Am I using std::move() too often?
body: <p>I finally feel like I understand move semantics in Modern C++, and it's had a dramatic change on the way I write code. Right now, I'm working on an application that uses dependency injection and I'm incorporating my newfound knowledge of move semantics, but I end up using <code>std::move()</code> so much that I'm worried I'm using it incorrectly.</p>
  
  <p>Previously, if I wanted to inject a dependency that I needed a copy of in my object, I'd write my constructor like this:</p>
  
  <pre><code>class NeedsCopyOfFoo
  {
  public:
    NeedsCopyOfFoo(const Foo&amp; foo)
      : m_myFoo{foo} {}
  private:
    Foo m_myFoo;
  };
  </code></pre>
  
  <p>Now, my classes look like this:</p>
  
  <pre><code>class NeedsCopyOfFoo
  {
  public:
    NeedsCopyOfFoo(Foo foo)
      : m_myFoo{std::move(foo)} {}
  private:
    Foo m_myFoo;
  };
  </code></pre>
  
  <p>There are classes in my design which take as many as three or four class-type dependencies, and I end up moving them all. Obviously, If the caller of my constructor is not able to invoke the constructor with an rvalue, but also isn't going to use the dependency after constructing a <code>NeedsCopyOfFoo</code> object, I also need to use <code>std::move()</code> there, to avoid a completely unnecessary copy.</p>
  
  <p>Is this the way that Modern C++ is supposed to look? Does Uncle Bob mention a code smell of "Uses <code>std::move()</code> too often"? Am I overreacting because I'm just not used to writing in this new style yet?</p>