C++ vector emplace_back calls copy constructor : <p>This is a demo class. I do not want my class to be copied, so I delete the copy constructor. I want vector.emplace_back to use this constructor 'MyClass(Type type)'. But these codes won't compile. Why?</p>

<pre><code>class MyClass
{
public:
    typedef enum
    {
        e1,
        e2
    } Type;
private:
    Type _type;
    MyClass(const MyClass&amp; other) = delete; // no copy
public:
    MyClass(): _type(e1) {};
    MyClass(Type type): _type(type) { /* the constructor I wanted. */ };
};

std::vector&lt;MyClass&gt; list;
list.emplace_back(MyClass::e1);
list.emplace_back(MyClass::e2);
</code></pre>
