title: How do I generate objects in std::vector and without copy?
body: <p>There is a student class</p>
  
  <pre><code>class Student
  {
  public:
      inline static int current_id_max = 0;
      int id = 0;
      string name;
  public:
      Student()
      {
          id = (++current_id_max);
          cout &lt;&lt; "Student constructor\n";
      }
      Student(const string&amp; _name)
      {
          name = _name;
          id = (++current_id_max);
          cout &lt;&lt; "Student constructor: " &lt;&lt; _name &lt;&lt; endl;
      }
      Student(const Student&amp; o)
      {
          name = o.name;
          id = (++current_id_max);
          cout &lt;&lt; "Student constructor copy: " &lt;&lt; name &lt;&lt; endl;
      }
      ~Student() { cout &lt;&lt; "Student destructor: " &lt;&lt; name &lt;&lt; endl; }
  };
  </code></pre>
  
  <p>I want to create 5 students with parameters into a vector,</p>
  
  <pre><code>std::vector&lt;Student&gt; school = 
      { Student("Tom"), Student("Mike"),Student("Zhang"), Student("Wang"), Student("Li")};
  </code></pre>
  
  <p>There will be 5 <code>Student constructor: name</code> and 5 <code>Student constructor copy: name</code>.</p>
  
  <p>What can I do to avoid the useless copying?</p>