While std::vector::emplace_back doesn't require either of those things to be defined, std::vector does require it's elements to be either copy or move constructable.
[edit: On the other hand, std::deque has no such requirements. http://ideone.com/y3dL8b Although, the number of methods you can use that don't require one or the other is limited.]
Thanks a bunch, cire. It puzzled me for a while. I knew that if I declared my own copy constructor, the default move constructor will be deleted. But I didn't know even if I just declare the copy constructor to be deleted, the default move constructor will also be deleted. It doesn't quite make sense to me.