std::vector::emplace_back有时会调用copy ctor!大意就是,如果发生扩容,且没有定义move ctor,那么会调用copy ctor。如果提供了move ctor,优先调用move ctor。

from cppreference:

Notes

Since reallocation may take place, emplace_back requires the element type to be MoveInsertable for vector.

https://stackoverflow.com/a/40457433