title: Unique_ptr template error
body: <p>I have the following class with a vector of unique_ptrs:</p>
  
  <pre><code>class StatManager
  {
  private:
      std::vector&lt;std::unique_ptr&lt;IStat&gt;&gt; stats;
  public:
  
      void setStat(const Stat&lt;bool&gt;&amp; stat) {
          stats.emplace_back(stat.clone());
      }
  
      void setStat(const Stat&lt;float&gt;&amp; stat) {
          stats.emplace_back(stat.clone());
      }
  
      void setStat(const Stat&lt;int&gt;&amp; stat) {
          stats.emplace_back(stat.clone());
      }
  
      bool getStatValue(std::string name, float &amp;value) {
          for (unsigned int x = 0; x &lt; stats.size(); x++)
          {
              if (stats.at(x)-&gt;getName() == name) {
                  value = stats.at(x)-&gt;getAsFloat();
                  return true;
              }
          }
          return false;
      }
  
      bool getStatValue(std::string name, int &amp;value) {
          for (unsigned int x = 0; x &lt; stats.size(); x++)
          {
              if (stats.at(x)-&gt;getName() == name) {
                  value = stats.at(x)-&gt;getAsInt();
                  return true;
              }
          }
          return false;
      }
  
      bool getStatValue(std::string name, bool &amp;value) {
          for (unsigned int x = 0; x &lt; stats.size(); x++)
          {
              if (stats.at(x)-&gt;getName() == name) {
                  value = stats.at(x)-&gt;getAsBool();
                  return true;
              }
          }
          return false;
      }
  };
  </code></pre>
  
  <p>And the class that implements it:</p>
  
  <pre><code>class BaseItem
  {
  private:
      int id;
      std::string name;
  public:
      BaseItem(int itemId, std::string itemName) : id(itemId), name(itemName) {}
  
      virtual int getID() = 0;
      virtual std::string getName() = 0;
  };
  
  
  class Item : public BaseItem
  {
  private:
      StatManager statManager; //ERROR HERE trying to implement StatManager
  public:
      Item(int id, std::string name);
  
      virtual int getID();
      virtual std::string getName();
  };
  </code></pre>
  
  <p>I get the following error on visual studio 2013 while trying to make an attribute of StatManager:</p>
  
  <pre><code>Error   5   error C2280: 'std::unique_ptr&lt;IStat,std::default_delete&lt;_Ty&gt;&gt;::
    unique_ptr(const std::unique_ptr&lt;_Ty,std::default_delete&lt;_Ty&gt;&gt; &amp;)'
    : \xmemory0   593 1   GameTheory++
  </code></pre>
  
  <p>So in my main class i just try to create a local instance of StatManager and it work without any problem, for example:</p>
  
  <pre><code>float f = 0; 
  StatManager manager; //Works flawless
  manager.setStat(ItemStat("Durabilit", 100, ""));
  manager.getStatValue("Durabilit", f);
  </code></pre>
  
  <p>So the problem happens only when trying to make StatManager as an attribute of any class... Is there anything i am missing, probably some move problem with the unique ptrs? I really dont know, thanks in advance.</p>
  
  <p><strong>EDITED:</strong></p>
  
  <p>Only place where i am using Item class is in the main method and trying to make a local instance of it:</p>
  
  <pre><code>Item item = Item(0, "Test");
  </code></pre>